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.

{
    return RPCHelpMan{"importprivkey",
                "\nAdds a private key (as returned by dumpprivkey) to your wallet. Requires a new wallet backup.\n"
                "Hint: use importmulti to import more than one private key.\n"
            "\nNote: This call can take over an hour to complete if rescan is true, during that time, other rpc calls\n"
            "may report that the imported key exists but related transactions are still missing, leading to temporarily incorrect/bogus balances and unspent outputs until rescan completes.\n"
            "Note: Use \"getwalletinfo\" to query the scanning progress.\n",
                {
                    {"privkey", RPCArg::Type::STR, RPCArg::Optional::NO, "The private key (see dumpprivkey)"},
                    {"label", RPCArg::Type::STR, RPCArg::DefaultHint{"current label if address exists, otherwise \"\""}, "An optional label"},
                    {"rescan", RPCArg::Type::BOOL, RPCArg::Default{true}, "Rescan the wallet for transactions"},
                },
                RPCResult{RPCResult::Type::NONE, "", ""},
                RPCExamples{
            "\nDump a private key\n"
            + HelpExampleCli("dumpprivkey", "\"myaddress\"") +
            "\nImport the private key with rescan\n"
            + HelpExampleCli("importprivkey", "\"mykey\"") +
            "\nImport using a label and without rescan\n"
            + HelpExampleCli("importprivkey", "\"mykey\" \"testing\" false") +
            "\nImport using default blank label and without rescan\n"
            + HelpExampleCli("importprivkey", "\"mykey\" \"\" false") +
            "\nAs a JSON-RPC call\n"
            + HelpExampleRpc("importprivkey", "\"mykey\", \"testing\", false")
                },
        [&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
{