fix(discovery): fix hanging if some peers don't respond
Previously the discovery algorithm would try to reach each known peer sequentially requiring each consequent request to succeed until the next one can be attempted. This would not work in some cases (see test in previous commit).
So the new algorithm instead makes a single attempt to reach each peer within a round, and if some failed they're retried in the next round of requests. This allows to overall discovery to succeed in cases when some of the initial peers never respond.
Closes #54 (closed)