TL;DRChain signals should let a train pass when it can clear the next full signal instead of when it can cross the next full signal.
What ?When a train path hits a chain signal the path is checked ahead up until the next full signal. The train should then try to reserve an amount equal to the length of the train instead of just the next segment. If the reserved amount includes another chain signal the process repeats recursively.
What this means in practice is that a chain signal should only be green/blue when the train is not just able to enter the next segment protected by a full signal but able to fully cross said signal and release the chain signal(s) before it. The train would never get stuck on a junction because it doesn't fully fit behind the full signal at the exit.
Why ?For junctions the rule is to put a chain signal before the junction and a full signal after the junction. The idea is that trains will only enter the junction when they are able to also leave it and will never get stuck on top of the junction. For that to work the segment after the junction protected by the full signal needs to be at least as large as the train. Otherwise the train can get stopped the next signal and it's tail can still be stuck on the unction. Similar for train stations and stackers.
When you start out and all your trains are LC or LF this is easy to do. But as you grow so do he trains. Suddenly there are LLCCCC trains and now all the junctions need to be revisited and the signals changed. Now the segment after a junction needs to have space for 6 train cars instead of just 2. It's is annoying to have to redo all the signaling everywhere and it's easy to miss some spot or make a mistake because one is in a hurry to get back to a functioning rail system. Also blueprints will be invalidated and need to be done again.
But there is more. If one has LCCCLCCCLCCCLCCC trains to carry ores then after a junction the next segment has to be 16 train cars long. But for many of the more advanced goods shorter trains will suffice, down to LC trains. Now those LC trains will also have to cross those 16 train car segments after each junction before the next train can even enter it. In a well functioning but busy train system that means ALL trains will keep to a 16 train car + breaking distance separation no matter how short they are. For an LC train that means a waste of 14 train cars distance and a much reduced throughput of the train system.
The whole train system is slowed down significantly because of a few long ore trains that occasionally have to drive through on their way to the smelter. On the other hand with my proposal the segment size after a junction doesn't matter. The train will only enter a chain signal segment if it can fully clear it. So LCCCLCCCLCCCLCCC will wait till there is 16 train car free space after the junction while LC trains only wait till there is 2 train car free space. Adding longer trains no longer breaks existing signaling and throughput doesn't go down for smaller trains just because longer ones are added.