'Wait' commands certainly help, and they are also realistic. A train doesn't pull up, uncouple, move forward etc without a 'wait' between, though I have never found the need for one before or after a 'load'/'unload' command.
There is a very handy driver command 'Release Junction', iirc by atilabarut. If it is enabled in a session it can be slipped into an AI drivers command line whenever necessary, I used it a bit in the original Clovis session where it was possible for an AI driver to claim a crossover lever while a considerable distance away.
I often think that session AI issues are caused by over-specifying commands, too many trackmarks etc. I have a 'Belen Dispatcher' session in TRS04 which has run (with saves) for nearly a real week. The route trackmarks etc are as per the released route. Portals at both ends spawn every 30 or 35 minutes and no train has a command line more complex than: one Drive Via TM, one Drive to TM List, one Wait and than a Drive to Portal. The Dive Via is to avoid the Jarales cutoff which is a shorter route and therefore the preffered AI route, the TM list puts the train at a pitstop refuel station where it waits to simulate refuelling, then off to the portal.
As I said, it has run for four or five REAL days (I forget, haven't fired it up in ages!), replicates the prototype traffic density on the BNSF Transcon over a distance of 120 miles, is totally in the hands of the AI and total human intervention is none! I just sit back and watch the trainz sort it all out for themselves, including numerous 3-way meets that I've managed to watch so goodness knows how many snuck through behind my back!