The advantage of an external regulator and a large capacitor is that spikes in power demand due to the ADC or other operations have less of an impact - the capacitors soak up the excess demand before the regulator can react to a drop in voltage. I'd use something like a 10V and up, 100uF aluminum or tantalum cap, along with a 0.1uF ceramic cap to help filter spikes. As I understand it, the large cap takes care of voltage dips while the small cap takes care of high frequency noise. And yes, I'd feed the output of the external voltage regulator / cap combo directly into the 3V3 pins.
However, in order for this to this to work, you either have to have no plug in the USB port, or you need to disconnect / cut the VIN-VUSB pad connection on the underside of the Teensy board (see the schematic). Otherwise, your USB connection will continue to provide power to the on-board regulator and then the on-board regulator will be fighting with the external regulator - not a good idea. The downside to this operation is that you'll either have to solder bridge that connection again to power the teensy from USB in the future or always plug it into a board with a voltage regulator (which is what I do).
The Teensy has a Unipolar ADC, which means it can only accept positive signals from 0-AREF. Usually AREF = VCC unless you overpower the internal AREF voltage with an external reference
AND (this is important!) remember to set the AREF voltage to external within setup() of your teensy program.
If you want to be extra careful, use a reference that has an enable pin - then have the teensy only enable the external reference for the AREF pin
after the Teensy software has enabled the external reference setting in setup(). One can choose from many different reference sources, I like the
AD1582 for simple applications and the
LM4132 for a reference with an external enable pin. These external references will provide more stable power to the ADC to use as a point of comparison, hence improving its accuracy. Remember to also provide caps on the input and output of the reference to help it provide the AREF pin with stable power.
The series reference voltage output has to be somewhere between the minimum ADC reference voltage (about 1.71V) and VCC. I have used 2.5V in the past but there are many good options such as 3V, 1.8V, etc. that these references are available at. I'd select the reference on its basis to maintain a given output, and how well it allows you to envelop the output of your sensor. Thus, a 1.8V or 2.048V reference would be ideal for a signal that may vary from 0-1.8V, for example. The reason to go with a 2.048V reference even if you expect the signal not to exceed 1.8V is simply caution to provide some 'headroom' for spikes.
As for single-ended vs. differential ADC operation, the benefit of using a differential input is that you can usually eliminate a lot of the common-mode noise. For example, if the ADC positive input is depressed somewhat due to a dip in voltage or a bit of interference on the signal line(s), then the same dip will also happen on the negative input, also depressing it. Since the ADC measures the difference between the two signals, such dips, spikes, pops, whatever are hence largely eliminated. Differential measurements are hence a popular feature for high-bit ADCs since noise becomes a serious concern once an ADC goes over 12 bits or so.
Keep in mind that you have to maintain "polarity" with the differential inputs - one is has a name ends in M and the other in P. P designates positive, M (minus?) Negative. Even though the terms positive and negative are used, both inputs have to be between 0 and the AREF voltage.
A10 = ADC Channel D0 Positive Input
A11 = ADC Channel D0 Negative Input
A12 = ADC Channel D3 Positive Input
A13 = ADC Channel D3 Negative Input
You will have to drop deeper down into the C syntax to get to these differential channels as Paul has not yet implemented these differential channels, AFAIK, in the simple-to-use Arduino IDE. Also keep in mind that the differences between the M and P terminals are additive and somewhat counterintuitive until you think about it for a moment. Thus, any voltage above 0 on the P terminal is additive while any voltage below AREF is subtractive on the M terminal. For example, if you have a AREF = 2V and a M signal of 1V and a P signal @ 1.5V then the difference being measured = 1+(2-1.5)=1.5V. Foe this example, the maximum output is measured with the P terminal at AREF and the M terminal at 0V. Similarly the minimum is when P is at zero volts and M is at 2V.
As I understand it, the Teensy ADC uses a small capacitor to charge and discharge to determine a given input voltage. Thus, providing the ADC with a low-impedance signal is a good idea - a high resistance input would potentially not allow the 4.5pF (?) capacitor inside the ADC to charge fully before the ADC attempts to determine the voltage. On one of my circuits I am using a AD8137 differential amplifier as a buffer and level shifter. The op amp basically provides plenty of signal and also converts the bipolar input signal (coming from a transformer) to two unipolar signals that can be used by the differential inputs of the Teensy ADC.
For slow-moving signals you can also try adding a capacitor from the analog input pin to ground to help absorb spikes and also help allow the SAR ADC in the Teensy quickly charge to a given voltage. High-bit differential signal paths will frequently feature a cap to GND on each signal path. You can combine such caps with a carefully-chosen resistor on each input to create a filter to take out high-frequency noise - see some high-bit ADC spec sheets to see what I mean. For example, for the AD7753 power measurement chip, they recommend a 1k resistor and a 1nF cap on each line.
Lastly, you can consider
over-sampling in software, again a workable solution for slow-moving signals.