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).
{
    Q_OBJECT
    void removeAndDeleteWallet(WalletModel* wallet_model);
public:
    WalletController(interfaces::Node& node, const PlatformStyle* platform_style, OptionsModel* options_model, QObject* parent);
    ~WalletController();
    
    std::vector<WalletModel*> getOpenWallets() const;
    WalletModel* getOrCreateWallet(std::unique_ptr<interfaces::Wallet> wallet);
    
    
    std::map<std::string, bool> listWalletDir() const;
    void closeWallet(WalletModel* wallet_model, QWidget* parent = nullptr);
Q_SIGNALS:
    void walletAdded(WalletModel* wallet_model);
    void walletRemoved(WalletModel* wallet_model);
    void coinsSent(WalletModel* wallet_model, SendCoinsRecipient recipient, QByteArray transaction);
private:
    QThread* const m_activity_thread;
    QObject* const m_activity_worker;
    interfaces::Node& m_node;
    const PlatformStyle* const m_platform_style;
    OptionsModel* const m_options_model;
    mutable QMutex m_mutex;
    std::vector<WalletModel*> m_wallets;
    std::unique_ptr<interfaces::Handler> m_handler_load_wallet;
    friend class WalletControllerActivity;
};
class WalletControllerActivity : public QObject