I'm sometimes getting an invalid json reply from `getwalletinfo` when rescanning is in progress.

The invalid part is this: `"scanning":{"duration":19,"progress":}}` (no value for `progress`).

I can't reliably reproduce this, but I did manage to run into this 3 times now (once every 10-20 attempts or so).

I'm running v0.20.0 and testing against a regtest instance. This happens while doing a batched `importmulti` of 2000 addresses (none of which have history).
{
    SignatureData sigdata;
    CScript script_pub_key = GetScriptForDestination(pkhash);
    for (const auto& spk_man_pair : m_spk_managers) {
        if (spk_man_pair.second->CanProvide(script_pub_key, sigdata)) {
            return spk_man_pair.second->SignMessage(message, pkhash, str_sig);
        }
    }
    return SigningResult::PRIVATE_KEY_NOT_AVAILABLE;
}
bool CWallet::FundTransaction(CMutableTransaction& tx, CAmount& nFeeRet, int& nChangePosInOut, bilingual_str& error, bool lockUnspents, const std::set<int>& setSubtractFeeFromOutputs, CCoinControl coinControl)
{
    std::vector<CRecipient> vecSend;
    
    for (size_t idx = 0; idx < tx.vout.size(); idx++) {
        const CTxOut& txOut = tx.vout[idx];
        CRecipient recipient = {txOut.scriptPubKey, txOut.nValue, setSubtractFeeFromOutputs.count(idx) == 1};
        vecSend.push_back(recipient);
    }
    coinControl.fAllowOtherInputs = true;
    for (const CTxIn& txin : tx.vin) {