The aaaSN754410 is a nice H-Bridge that can run two motors, bi-directional, with breaking or freespin, and supports PWM. And at a couple$ each, their low cost.
The description says ...
The SN754410 is a quadruple high-current half-H
driver designed to provide bidirectional drive
currents up to 1 A at voltages from 4.5 V to 36 V.
If you use a single parallel shift output register (74HC595) then you can use 3 wires (digital high/low) from your arduino to run 8 output signals from the 74HC595 register. The 8 signals from the 74HC595 can be 8 on/off signals to 4 H-bridges (2 motors per bridge).
You can even, if your able to code it on the arduino, code PWM looping code that sends pulse signals to the 74HC595 which in turn pulses the h-bridge motors on/off to control speed.
If you need/want to monitor input signals (motion, light, water, temp, etc, sensors) to activate your motors, then you can use a 74HC165 input shift register (3 wires to arduino) to monitor for 8 input signals. Both the HC595 and HC165 support daisy chaining so you can increase the number of inputs/output signals to your arduino without changing the number of wires to the arduino.
So, 3 wires from your arduino to control 8 or more output signals (8 * number of HC595 chips). If you add the 74HC165 for input signal monitoring, then 6 wires total to do both input and output signals.
If you do just simple input signal on/off monitoring, and simple on/off output signals to start/stop motors, then the arduino coding is pretty straightforward, lots of examples to be found. If you needed to code the PWM, then that's more advanced coding.
I happen to be working and using on all these strategies on my current project, so I know they are all workable approaches.
Regards,
Eric