DC motors will almost certainly give you the best combination of power to weight ratio and top speed.
A DC motor is intended to work from a direct current supply. Voltage is applied to the motor terminals and the motor begins to rotate. As the armature picks up speed, a voltage is induced in the windings that tries to oppose the current flowing in them. Quite quickly, a speed is reached where a balance is established and the motor speed stabilises. The speed at which this occurs is a function of the applied voltage and the motor characteristics. The amount of turning force, torque, that the motor can produce is a function of the current through the windings. As a load is applied to the motor, the speed drops and the current increases. A load just sufficient to stop the motor is the stall torque and will correspond to some particular (and fairly high) current through the windings. You don’t want to do that to your motor, the energy can only appear as heat. Try to avoid letting the smoke out or it won’t want to run again.
Motors run most efficiently at some relatively high speed (thousands of RPM) where the available torque will be significantly less than the stall torque. Since you want your wheels to turn at, perhaps, 1000 RPM, you will need to use gears. The effect of gears is to step down the output speed while multiplying the available torque. For example, ignoring losses, a 10:1 gear ratio will increase torque by a factor of 10 while reducing drive speed by the same factor.
You can choose to make a gearbox or buy one. Motors with gearboxes are available in the required sizes but are expensive. Think carefully about motor layout. Consider putting the motors side by side with a spur gear driving the wheels. A suitable right angle drive could allow the motors to sit along the axis of the mouse. Don’t forget to include the ratio of the final drive gears in your calculations.
While these motors are expecting a direct current to drive them, it is much more efficient to use a supply that is switched on and off repeatedly. The width of the on pulses is varied so that the motor sees the average amount of energy flowing. Pulse width modulation (PWM) of the motors is not too complicated to achieve. The section of processors has more on this. You will need to select a pulse repetition rate that is quite high. A few hundred Hz is just not going to do it. However, a rate that is too high will be less efficient because of the inductance of the motor windings. Should you pick a frequency in the audible range, you will have to live with the motors whining at you (and everyone else) all the time. Somewhere in the range 20kHz – 40kHz will probably be fine. Try to ensure that the rate does not cause trouble by interfering or beating with other events. For example, I would expect trouble if the motor PWM repetition frequency was 20kHz and you had IR sensors modulated at 40kHz. Noise from the motors might find its way to the IR detectors. Change the frequency to, say, 23kHz where there are no simple common factors.
There will have to be some way to measure the speed of your motors. This may be the same as measuring the speed of the wheels but need not be. The wheel speed is really needed for working out position – absolute measures of speed are not really important except to tell if you can stop before some point. Slop in your gearbox may well mean that there is a pretty scruffy relationship between the motor speed/position and the wheel speed/position. Some motors are available with incremental encoders or other feedback devices built in. These tend to be more expensive. I did find some very nice Maxon motors with built in quadrature encoders at a ham radio rally for a few pounds but you rely a lot on luck in that sort of endeavour. They turn at about 9000RPM on a 9 volt supply and should be rather good geared down by about 6:1. Small incremental shaft encoders can be attached to the drive train – did I mention these were expensive? The Hewlett Packard HEDS9100 is a fairly compact encoder module. It requires a code wheel attached to the output shaft and give 1000 pulses per revolution. You can easily use this as a combined motor and wheel speed sensor. For a 35mm wheel, this will give you a positional accuracy in the order of a fraction of a millimetre.
While running, your motor speed will be controlled in a software feedback control loop. Regular measurements of wheel speed are taken and used to calculate a new value for the PWM pulse width. This is a classic control problem – solutions are available almost anywhere (except here – yet).