The `dumpwallet` RPC command throws an error at the signet node and stops it.
~~This does not happen in mainnet or testnet, where the command worked successfully in my tests..~~
Originally this error was only happening on signet, but it also happened on testnet after it worked successfully for a while.

**Expected behavior**

The RPC `dumpwallet` command is expected to return a success message and create the dump file that contains the private keys.

**Actual behavior**

The command returns an error on client side (`bitcoin-cli`):
`error: timeout on transient error: Could not connect to the server 127.0.0.1:38332 (error code 1 - "EOF reached")
Make sure the bitcoind server is running and that you are connecting to the correct RPC port.`

And it throws an error at the signet node and stops it.

```
POTENTIAL DEADLOCK DETECTED
Previous lock order was:
  'cs_wallet' in wallet/wallet.cpp:2860 (in thread 'httpworker.1')
  (2) '::cs_main' in node/interfaces.cpp:687 (in thread 'httpworker.1')
  'm_node.mempool->cs' in node/interfaces.cpp:687 (in thread 'httpworker.1')
  'cs_wallet' in wallet/wallet.cpp:1204 (in thread 'httpworker.1')
  (1) 'cs_KeyStore' in script/signingprovider.cpp:165 (in thread 'httpworker.1')
Current lock order is:
  'wallet.cs_wallet' in wallet/rpcdump.cpp:743 (in thread 'httpworker.3')
  (1) 'spk_man.cs_KeyStore' in wallet/rpcdump.cpp:743 (in thread 'httpworker.3')
  (1) 'spk_man->cs_KeyStore' in wallet/wallet.cpp:2303 (in thread 'httpworker.3')
  (2) 'cs_main' in node/interfaces.cpp:493 (in thread 'httpworker.3')
Assertion failed: detected inconsistent lock order for 'cs_main' in node/interfaces.cpp:493 (in thread 'httpworker.3'), details in debug log.
Aborted (core dumped)
```

**To reproduce**

Start the node on signet mode:
`bitcoind -signet`

And dump an existing wallet:
`bitcoin-cli -signet -rpcwallet="legacy_wallet_01" dumpwallet "filename"`

**System information**

The bitcoin node was compiled from master (commit: `df2b5dadfb2dc21b05e5a60b71987fb5b96201f5`)
Ubuntu 20.04, 8 CPUs, 12 GiB RAM and SSD.

EnsureWalletIsUnlocked(*pwallet);
    std::string strAddress = request.params[0].get_str();
    CTxDestination dest = DecodeDestination(strAddress);
    if (!IsValidDestination(dest)) {
        throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid Bitcoin address");
    }
    auto keyid = GetKeyForDestination(spk_man, dest);
    if (keyid.IsNull()) {
        throw JSONRPCError(RPC_TYPE_ERROR, "Address does not refer to a key");
    }
    CKey vchSecret;
    if (!spk_man.GetKey(keyid, vchSecret)) {
        throw JSONRPCError(RPC_WALLET_ERROR, "Private key for address " + strAddress + " is not known");
    }
    return EncodeSecret(vchSecret);
},
    };
}
RPCHelpMan dumpwallet()
{
    return RPCHelpMan{"dumpwallet",
                "\nDumps all wallet keys in a human-readable format to a server-side file. This does not allow overwriting existing files.\n"
                "Imported scripts are included in the dumpfile, but corresponding BIP173 addresses, etc. may not be added automatically by importwallet.\n"
                "Note that if your wallet contains keys which are not derived from your HD seed (e.g. imported keys), these are not covered by\n"
                "only backing up the seed itself, and must be backed up too (e.g. ensure you back up the whole dumpfile).\n",
                {
                    {"filename", RPCArg::Type::STR, RPCArg::Optional::NO, "The filename with path (absolute path recommended)"},
                },
                RPCResult{
                    RPCResult::Type::OBJ, "", "",