Using powerful Motors with Arduino

I am working on a remote controlled car using Arduino Uno and Xbee. I need to power 4 12V 500 RPM Johnson Motors that require 800mA current (no load) and upto 9A current (Load). I obviously can not power the motors directly from the arduino so I need a motor driver. The ones I have , L293D and L298N, have current limit of max 4A. So probably I should not use them for controlling the motors.
Motor drivers that support more current are very expensive and not the best choice for me.
Can anyone recommend some way to use the motors along with the arduino. I need to change the directions as well as control the speed.
Thanks in advance

Note- I can also use a combination of 2 12V Johnson Motors and 2 300RPM normal DC motors that do not have that high current requirement.

The L29x based motor drivers actually can't handle much more than about 1 ampere continuously, without overheating.

This Pololu motor driver will handle your motors, and is well worth the price.

@jremington thanks for the prompt reply. Unfortunately Pololu motor driver is very expensive for me (a student). Is there no other way? Using a relay or a transistor. I have read they can be used for controlling motors but didn't come across any article that specifies how to use them.

A simple transistor driver drives a motor in one direction only. For bidirectional, use an H-bridge.

The Pololu H-bridge driver I linked is one of the few that are suitable and cost effective. If you can't afford it, then this project is simply too expensive for you.

Relays will work for on/off and changing directions, but do not offer speed control. Relays that can safely and reliably switch 10 amperes DC are not cheap.

You might want to think about using a brushed ESC from HobbyKing.

Here’s a link to one of their brushed ESCs.