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).
LOCK(cs_wallet);
    CWalletTx wtxNew(this, std::move(tx));
    wtxNew.mapValue = std::move(mapValue);
    wtxNew.vOrderForm = std::move(orderForm);
    wtxNew.fTimeReceivedIsTxTime = true;
    wtxNew.fFromMe = true;
    WalletLogPrintf("CommitTransaction:\n%s", wtxNew.tx->ToString()); 
    
    
    AddToWallet(wtxNew);
    
    for (const CTxIn& txin : wtxNew.tx->vin) {
        CWalletTx &coin = mapWallet.at(txin.prevout.hash);
        coin.BindWallet(this);
        NotifyTransactionChanged(this, coin.GetHash(), CT_UPDATED);
    }
    
    
    CWalletTx& wtx = mapWallet.at(wtxNew.GetHash());
    if (!fBroadcastTransactions) {
        
        return;
    }
    std::string err_string;
    if (!wtx.SubmitMemoryPoolAndRelay(err_string, true)) {
        WalletLogPrintf("CommitTransaction(): Transaction cannot be broadcast immediately, %s\n", err_string);
        
    }
}
DBErrors CWallet::LoadWallet(bool& fFirstRunRet)