Opening two of the same wallet (tested in v0.18.0 of bitcoin-qt 64 bit) will cause a database collision, and will crash the program.

`[marshall@likon] {21:21} [~] $ bitcoin-0.18.0/bin/bitcoin-qt `
`terminate called after throwing an instance of 'std::runtime_error'  what():  BerkeleyBatch: Can't open database 8204388-wallet.dat (duplicates fileid 8b1c090000000800e25686350000000000000000 from 1352491-wallet.dat)`
`Aborted (core dumped)`

I have been able to reproduce the issue by importing two of the same wallet (with different filenames).
continue;
        }
        SignatureData sigdata;
        input.FillSignatureData(sigdata);
        std::set<ScriptPubKeyMan*> spk_mans = GetScriptPubKeyMans(script, sigdata);
        if (spk_mans.size() == 0) {
            continue;
        }
        for (auto& spk_man : spk_mans) {
            
            if (visited_spk_mans.count(spk_man->GetID()) > 0) {
                continue;
            }
            
            TransactionError res = spk_man->FillPSBT(psbtx, sighash_type, sign, bip32derivs);
            if (res != TransactionError::OK) {
                return res;
            }
            
            visited_spk_mans.insert(spk_man->GetID());
        }
    }
    
    complete = true;
    for (const auto& input : psbtx.inputs) {
        complete &= PSBTInputSigned(input);
    }
    return TransactionError::OK;
}
SigningResult CWallet::SignMessage(const std::string& message, const PKHash& pkhash, std::string& str_sig) const