well...i got a similar problem. I have a Taxi cab which can be called by an action to players actual position. This worked pretty well, but sometimes the driver was just too stupid and crashed the car, get out of it and continued his path at feet. As you can imagine, this isn't pretty cool when you call a Taxi and the driver comes without a Car ;D
for this i wrote a little script which checks if car is dammaged and repairs it and moves driver instantly back on his driving seat.
I'll post it here, maybe it helps you to get some ideas.
_vehic = _this select 0
_driver = _this select 1
#loop
~0.5
_dam = getdammage _vehic
?(_dam >= 0.2): goto "repair"
?(isnull driver _vehic):goto "repair"
_vehic setfuel 1
goto "loop"
#repair
_vehic setdammage 0
_driver setdammage 0
_driver moveindriver _vehic
goto "loop"
Good luck with your heavy traffic...and watch out when passing roads