Measuring 10RPM is difficult since ideally, you dont want your controller to have to wait 6 seconds between adjustments. The method that we use is an optical encoder on our motor shaft (ours is an air bearing linear drive, but the same principle applies). The particular encoder I use is 100 "pulses per revolution" So that turns a 10RPM into 1000 RPM, you would get a pulse about every 60ms. Also, on most of the drives with integrated transmissions I have used, when a tachometer is present, it is always measured at the input shaft speed rather than the output speed (probably for this very reason). There are not too many native low speed motors because their construction is difficult (if I understand correctly).
When using PICs or AVRs (which I would suggest), I woulse use the pulse counting in a certain window of time technique. In this case, a simple multiply is all that is needed to compute frequency. The tricky part is during rapid changes in acceleration which result in rapid changes to rotational velocity. In that case, the count may overflow or underflow and you need to adjust the sampling window accordingly. To avoid jitter, you can always average the last n windows (effectively a DC lowpass filter). I would setup my control loop for the minimum speed, not including 0, (longtest time between pulses), so that I would not have to dynamically adjust kp,ki,kd during operation.
The FDIV method in 6811 works great, it is just you get much better performance with less hardware in a pic or avr system, which translates to less problems and less money.