Using master @ cb35f1d305d88934df64c2e7fb80700b673360e6

Run `bitcoin-qt`, and open either the `Encrypt Wallet` or `Change Passphrase` window. 
Unload the wallet. ie `src/bitcoin-cli unloadwallet`

```
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
  * frame #0: 0x00007fff5ba9523e libsystem_kernel.dylib`__pthread_kill + 10
    frame #1: 0x00007fff5bb4bc1c libsystem_pthread.dylib`pthread_kill + 285
    frame #2: 0x00007fff5b9fe1c9 libsystem_c.dylib`abort + 127
    frame #3: 0x00007fff5bb0d6e2 libsystem_malloc.dylib`malloc_vreport + 545
    frame #4: 0x00007fff5bb0d4a3 libsystem_malloc.dylib`malloc_report + 152
    frame #5: 0x0000000101ef9e90 QtCore`QObjectPrivate::deleteChildren() + 224
    frame #6: 0x00000001012439e2 QtWidgets`QWidget::~QWidget() + 1058
    frame #7: 0x00000001000ddc8c bitcoin-qt`WalletView::~WalletView() [inlined] WalletView::~WalletView(this=0x0000000159d976e0) at walletview.cpp:87 [opt]
    frame #8: 0x00000001000ddc87 bitcoin-qt`WalletView::~WalletView() [inlined] WalletView::~WalletView(this=0x0000000159d976e0) at walletview.cpp:86 [opt]
    frame #9: 0x00000001000ddc87 bitcoin-qt`WalletView::~WalletView(this=0x0000000159d976e0) at walletview.cpp:86 [opt]
    frame #10: 0x00000001000d42f8 bitcoin-qt`WalletFrame::removeWallet(this=0x000000010eaa4130, wallet_model=<unavailable>) at walletframe.cpp:98 [opt]
    frame #11: 0x000000010001f5b6 bitcoin-qt`BitcoinGUI::removeWallet(this=0x0000000108dc8bb0, walletModel=<unavailable>) at bitcoingui.cpp:611 [opt]
    frame #12: 0x0000000101f01d7b QtCore`QMetaObject::activate(QObject*, int, int, void**) + 2219
    frame #13: 0x00000001000ef3ff bitcoin-qt`WalletController::walletRemoved(this=<unavailable>, _t1=<unavailable>) at moc_walletcontroller.cpp:206 [opt]
    frame #14: 0x00000001000d2f46 bitcoin-qt`WalletController::removeAndDeleteWallet(this=0x0000000159d31a00, wallet_model=0x0000000122f44f80) at walletcontroller.cpp:91 [opt]
    frame #15: 0x0000000101f01d7b QtCore`QMetaObject::activate(QObject*, int, int, void**) + 2219
    frame #16: 0x0000000101efa801 QtCore`QObject::event(QEvent*) + 753
    frame #17: 0x0000000101218f8d QtWidgets`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 269
    frame #18: 0x000000010121a392 QtWidgets`QApplication::notify(QObject*, QEvent*) + 594
```
{
    QMutexLocker locker(&m_mutex);
    
    if (!m_wallets.empty()) {
        std::string name = wallet->getWalletName();
        for (WalletModel* wallet_model : m_wallets) {
            if (wallet_model->wallet().getWalletName() == name) {
                return wallet_model;
            }
        }
    }
    
    WalletModel* wallet_model = new WalletModel(std::move(wallet), m_node, m_platform_style, m_options_model, nullptr);
    m_wallets.push_back(wallet_model);
    connect(wallet_model, &WalletModel::unload, [this, wallet_model] {
        removeAndDeleteWallet(wallet_model);
    });
    
    connect(wallet_model, &WalletModel::coinsSent, this, &WalletController::coinsSent);
    
    if (QThread::currentThread() == thread()) {
        addWallet(wallet_model);
    } else {
        
        wallet_model->moveToThread(thread());
        QMetaObject::invokeMethod(this, "addWallet", Qt::QueuedConnection, Q_ARG(WalletModel*, wallet_model));
    }
    return wallet_model;
}
void WalletController::addWallet(WalletModel* wallet_model)