When paired points are crossed, when the first one is freed by the train, a route can be set on the freed point which leads to this situation:

The second point has moved even if the train is on it.

And when the train continues to run, the track behind the train stays occupied.
I tried to do something in the route manager, but the fact that the point position is not stored in PointsItem makes it really difficult to implement the check.
Another way to avoid this situation would be to implement transits (FR) or subroutes (UK) which will lock the point while the transit (or subroute) is active. The transit (or subroute) will be freed when both the previous transit (or subroute) is freed and the track is free.