Change handling of inbound peers
Instead of swapping out a random node for an incoming node when handling inbound peers, partition the inbound peers into two groups - recent incoming and old incoming. When randomly selecting an inbound peer to evict to make room for new inbound peers, only evict one of the recent incoming peers. The recent incoming peers should be something like 30% of the size of the old incoming peers, and as old incoming peers go offline or disappear, we should swap in one of the new incoming peers according to who has been the longest lived incoming peer. The big tradeoff is that we want to insure that incoming peers are not easily evicted immediately so that they have time to at least call the ‘get peers’ rpc to find other peers to download blocks from.