Endorsements are public, so anyone can see which nodes have been endorsed and when. You simply use a set of the most recent endorsements to determine who the current consensus nodes are for a transaction at the time it was created (and if the time is forged, it doesn't matter).
This works, is reliable and robust for a number of reasons:
1 Only endorsed nodes that were included in final transactions, voted for by a previous set of eligible nodes are selected, so you have a reliable set that everyone can agree. Consensus on the transactions results in consensus of a future agreed set.
2 Providing that the selection set is recent, then you have a very high chance that those nodes are still online and that they will be around to take part in the consensus process. Thus you have a reliable majority available. Only in rare edge cases would a majority of those nodes have all suddenly gone offline.
Two questions:
1) Is is possible that the eligible set of nodes changes so rapidly, that nodes with high latency don't have time to pick up on what the agreed set should be?
2) Doesn't this lead to an ever decreasing set of eligible nodes, since nodes will go offline and only nodes that are eligible are from the previous round?
The exception is FBA (Stellar), but I'm not sure if I 100% align with the philosophy of it, as having nodes pick their own consensus nodes raises a few flags for me.
You are aware of the fact that stellar's consensus was so completely broken that they had to resort to running only one validating node? The reason being that they were unable to deal with forks, which the consensus didn't expect to be possible.