Given that the brushed DC motors you are using can output a maximum power of 3 watts and are rated for 12 volts maximum, the max current will be 0.25 amps or 250 milliamps. So you need to find something that can handle those specs.
In the most straightforward approach you have two options. Either you can opt to use a dedicated driver board (e.g. like the adafruit motor shield) or you can use a dedicated IC that can serve the same function but at a fraction of a cost. Given that you need to control 16 brushed DC motors, the IC route would probably be the most cost-effective.
Personally I have used the SN754410NE Quad Half-H Driver. The interesting thing about this IC driver is you can control 2 DC motors in either direction and with supply voltages of up 36 volts and drive currents of up to 1 amp, which is suitable for your application. If you're going to control brushless DC motors, then that's a different story.