message: Improve addrman Select() performance when buckets are nearly empty
diff: @@ -345,8 +345,10 @@ CAddress CAddrMan::Select_()
  while (1) {
  int nKBucket = GetRandInt(ADDRMAN_TRIED_BUCKET_COUNT);
  int nKBucketPos = GetRandInt(ADDRMAN_BUCKET_SIZE);
  - if (vvTried[nKBucket][nKBucketPos] == -1)
  - continue;
  + while (vvTried[nKBucket][nKBucketPos] == -1) {
  + nKBucket = (nKBucket + insecure_rand()) % ADDRMAN_TRIED_BUCKET_COUNT;
  + nKBucketPos = (nKBucketPos + insecure_rand()) % ADDRMAN_BUCKET_SIZE;
  + }
  int nId = vvTried[nKBucket][nKBucketPos];
  assert(mapInfo.count(nId) == 1);
  CAddrInfo& info = mapInfo[nId];
  @@ -360,8 +362,10 @@ CAddress CAddrMan::Select_()
  while (1) {
  int nUBucket = GetRandInt(ADDRMAN_NEW_BUCKET_COUNT);
  int nUBucketPos = GetRandInt(ADDRMAN_BUCKET_SIZE);
  - if (vvNew[nUBucket][nUBucketPos] == -1)
  - continue;
  + while (vvNew[nUBucket][nUBucketPos] == -1) {
  + nUBucket = (nUBucket + insecure_rand()) % ADDRMAN_NEW_BUCKET_COUNT;
  + nUBucketPos = (nUBucketPos + insecure_rand()) % ADDRMAN_BUCKET_SIZE;
  + }
  int nId = vvNew[nUBucket][nUBucketPos];
  assert(mapInfo.count(nId) == 1);
  CAddrInfo& info = mapInfo[nId];
  