For bus lines, I've observed that in RL the flow control is done at certain stations of the line (normally terminus stations, but not always). The buses proceed as fast as they can until they reach one of those control stations, then probably wait some time before continuing if they have been too fast.
For Simutrans, that could be achieved in two ways I can think of:
1) An option similar to Min. load or Max. waiting time: min. waiting time since last convoy of this line arrived. That would require to record for each station and line that serves it the last time a convoy arrived.
2) ST could calculate that time automatically and, in this second option, it would only be a check mark in the interface: automatic spacing. ST would record the average time t for a convoy to go round the line and make each convoy wait at least t/N, being N the number of convoys of that line.
Nothing is perfect, of course, the problem remains when we have heterogeneous lines (made up of different types of convoys, some slower, some faster...)