message: gui: Unregister wallet notifications before unloading wallets
  This change was originally part of both bitcoin/bitcoin#10102 and
  bitcoin/bitcoin#19101 and is required for both because it avoids the IPC
  wallet implementation in bitcoin/bitcoin#10102 and the WalletContext
  implementation in bitcoin/bitcoin#19101 needing to deal with
  notification objects that have stale pointers to deleted wallets.
diff: @@ -343,6 +343,17 @@ void BitcoinApplication::requestShutdown()
  window->setClientModel(nullptr);
  pollShutdownTimer->stop();
  +#ifdef ENABLE_WALLET
  + // Delete wallet controller here manually, instead of relying on Qt object
  + // tracking (https://doc.qt.io/qt-5/objecttrees.html). This makes sure
  + // walletmodel m_handle_* notification handlers are deleted before wallets
  + // are unloaded, which can simplify wallet implementations. It also avoids
  + // these notifications having to be handled while GUI objects are being
  + // destroyed, making GUI code less fragile as well.
  + delete m_wallet_controller;
  + m_wallet_controller = nullptr;
  +#endif // ENABLE_WALLET
  +
  delete clientModel;
  clientModel = nullptr;
  