The core of my solution is at:

   http://users.adelphia.net/~showaltb/rubyquiz/56/derby.rb

It assigns cars by computing a "weight" factor for each car based on the 
  following criteria:

   a) How many times has the car been assigned to this lane?
   b) How many times has the car been matched up against the opponents
      already slotted to this heat?
   c) How long has it been since the car was last scheduled to a heat?

The weight factors act as a bias against selecting a car.