currently reserved tracks block trains from moving there even if by the time train reach there the block will be free, causing no stop-zones to force 1 train length spacing between trains even though there are no incoming converging trains.
what you want to do is store time dimension on block reservations in code, so test the block free-ness at t time not just at current time. if train is able to move forward, it should release blocks at corresponding times.
this way no stop zones won't force 1 train length spacing between trains.