Make sure we always have a node to do IBD from

This introduces the concept of the 'sync node', which is the one we asked for missing blocks. In case the sync node goes away, a new one will be selected.

For now, the heuristic is very simple, but it can easily be extended later to add better policies.