There are many different approaches to 'peer to peer'. You could do what you are suggesting where if the server currently in use shuts down, clients switch to a predefined backup server hosted by a client who is still available.
Previously I had a discussion about peer to peer
here and suggested an alternative method. I said the following:
Peer to peer is possible with DarkNet, the main problem is the need for port forwarding which can be overcome with DarkNet's Universal Plug and Play commands. I had a discussion with 'Alfa x' about this a while ago, here is what I said: "I have not attempted this before, but off the top of my head I would achieve this by giving each client three or more instances. 1. mnConnect to main server, 2. mnStartServer to receive data from other clients, 3+. mnConnects to other clients. Upon connection to the main server, the server sends the client's information to all other clients so that they can connect to the new client.".