Nice read, maybe a bit theoretical.
Exactly. It won’t work! Because of that.Some of this might be applied to Factorio as well, although it's probably a bit different since there are no waiting queues for resource allocation.
Add one queue (one more stop with space for N trains) and the problem resolves by itself.
Hmmmm.
That would be a more or less simple solution: a new “buffer stop”. Which is nothing else than: if a train is not able to leave a stop within some seconds (can be defined by a signal in the current stop) the train selects the next free buffer stop.
Really simple solution. Can be easy implemented as mod.