The problem was originally reported in https://github.com/bitcoin/bitcoin/issues/22450#issuecomment-880629375. This is a dedicated issue to track it independently because it is a different problem than the one reported in #22450 OP/description.

```
fuzz: addrman.cpp:149: void CAddrMan::SwapRandom(unsigned int, unsigned int): Assertion `nRndPos1 < vRandom.size() && nRndPos2 < vRandom.size()' failed.
```

To reproduce:
```sh
FUZZ=addrman_deserialize ./src/test/fuzz/fuzz /tmp/crash-ef7d4a4f940b8fdb4999f6a92969260cf8e1405f.log
```
[crash-ef7d4a4f940b8fdb4999f6a92969260cf8e1405f.log](https://github.com/bitcoin/bitcoin/files/6830072/crash-ef7d4a4f940b8fdb4999f6a92969260cf8e1405f.log)

good_time};
    
    const CAddress i2p_tried3{
        ResolveService("hnbbyjpxx54623l555sta7pocy3se4sdgmuebi5k6reesz5rjp6q.b32.i2p",
                       I2P_SAM31_PORT),
        NODE_NONE,
        good_time};
    
    const CAddress i2p_tried4{
        ResolveService("hna37nqr3ahkqv62cuqfwgtneekvvpnuc4i4f6yo7tpoqjswvcwa.b32.i2p", port),
        NODE_NONE,
        good_time};
    
    const CAddress ipv4_tried{ResolveService("2.3.4.5", port), NODE_NONE, good_time};
    const CNetAddr source;
    CDataStream stream(SER_NETWORK, PROTOCOL_VERSION);
    addrman1.Add(i2p_new1, source);
    addrman1.Add(i2p_new2, source);
    addrman1.Add(i2p_new3, source);
    addrman1.Add(i2p_new4, source);
    addrman1.Add(ipv4_new, source);
    addrman1.Add(i2p_tried1, source);
    addrman1.Good(i2p_tried1);
    addrman1.Add(i2p_tried2, source);
    addrman1.Good(i2p_tried2);
    addrman1.Add(i2p_tried3, source);
    addrman1.Good(i2p_tried3);
    addrman1.Add(i2p_tried4, source);
    addrman1.Good(i2p_tried4);
    addrman1.Add(ipv4_tried, source);