Look at the Zerotier vpn model. They have several instances hosted all over the world that the client app running on user devices initially contact. These instances are in essence federated even if they use a different term for it.
The instance then gives each client a list of peers and how to reach them, and the clients attempt to reach each other directly, bypassing the instance where possible.
Both models work together. There’s no need for locking into one and ignoring the other. Use the best tool for the job at hand.