See https://github.com/bitcoin/bitcoin/pull/22762#issuecomment-951063826

This can be fixed by creating a new exception type and catching it in the right place.

#### Useful skills:

* C++ exceptions
* Addrman serialization
* Functional tests

#### Want to work on this issue?

For guidance on contributing, please read [CONTRIBUTING.md](https://github.com/bitcoin/bitcoin/blob/master/CONTRIBUTING.md) before opening your pull request.

{
    AssertLockHeld(cs);
    AddrInfo* pinfo = Find(addr);
    
    if (!pinfo)
        return;
    AddrInfo& info = *pinfo;
    
    int64_t nUpdateInterval = 20 * 60;
    if (nTime - info.nTime > nUpdateInterval)
        info.nTime = nTime;
}
void AddrManImpl::SetServices_(const CService& addr, ServiceFlags nServices)
{
    AssertLockHeld(cs);
    AddrInfo* pinfo = Find(addr);
    
    if (!pinfo)
        return;
    AddrInfo& info = *pinfo;
    
    info.nServices = nServices;
}
void AddrManImpl::ResolveCollisions_()