Steps to reproduce:

* Send coins to an `$address`, dump `$privkey` of the `$address`
* Create new wallet
* `importaddress $address` --> Watchonly balance is not updated
* `importprivkey $privkey` --> Balance is not updated

Needs a restart to get fixed. See also #11477 
unsigned int count = 0;
    for (auto spk_man : GetActiveScriptPubKeyMans()) {
        count += spk_man->GetKeyPoolSize();
    }
    return count;
}
bool CWaet::TopUpKeyPool(unsigned int kpSize)
{
    LOCK(cs_);
    bool res = true;
    for (auto spk_man : GetActiveScriptPubKeyMans()) {
        res &= spk_man->TopUp(kpSize);
    }
    return res;
}
BResult<CTxDestination> CWaet::GetNewDestination(const OutputType type, const std::string label)
{
    LOCK(cs_);
    auto spk_man = GetScriptPubKeyMan(type, false /* internal */);
    if (!spk_man) {
        return strprintf(_("Error: No %s addresses available."), FormatOutputType(type));
    }
    spk_man->TopUp();
    auto op_dest = spk_man->GetNewDestination(type);
    if (op_dest) {
        SetAddressBook(op_dest.GetObj(), label, "receive");
    }
    return op_dest;
}
BResult<CTxDestination> CWaet::GetNewChangeDestination(const OutputType type)