When `bitcoin-cli` is run, **it, not bitcoind** creates an empty `~/.bitcoin/wallets` direcctory with `~` bring home of currently running user. This is weird and leads to user confusion because it happens even in cases when `bitcoin-cli` connects to a `bitcoind` running under a different user or probably on other machine.

**Expected behavior**

`bitcoin-cli` never modifies filesystem, especially not things that the daemon should take care of.

**Actual behavior**

`bitcoin-cli creates empty directory`

**To reproduce**

0. make sure `~/.bitcoin` does **not** exist under user A
1. install `bitcoind` and run it under a user B
2. run `bitcoin-cli getblockchaininfo` under user A
3. `ls ~/.bitcoin` under user A

For quick setup, you can try to use [my project](https://deb.ln-ask.me) in a Debian VM or using provided Docker file. Just `apt install bitcoin-regtest bitcoin-cli`, it's already pre-configured to run under a different user, so then just running `sudo bitcoin-cli getblockchaininfo && sudo ls /root/.bitcoin` should reproduce the issue.

**System information**

0.20 official release downloaded from `https://bitcoin.org/bin/bitcoin-core-...`, verified GPG signature from Wladimir.

OS: Linux Debian Buster
CPU: Intel x86_64
Disk: NVMe SSD
FS: ext4

I don't think configuration is relevant since `bitcoin-cli` is **not** informed where to find it (via parameters or otherwise) and thus it can **not** access it. I also added `-rpcport` and `-rpccookiefile` parameters explicitly but I don't think it's relevant.

Loosely related to #16220, but not a duplicate.
errors.clear();
    if (!gArgs.WriteSettingsFile(&errors)) {
        std::string error = QT_TRANSLATE_NOOP("bitcoin-core", "Settings file could not be written");
        std::string error_translated = QCoreApplication::translate("bitcoin-core", error.c_str()).toStdString();
        InitError(Untranslated(strprintf("%s:\n%s\n", error, MakeUnorderedList(errors))));
        QMessageBox messagebox(QMessageBox::Critical, PACKAGE_NAME, QString::fromStdString(strprintf("%s.", error_translated)), QMessageBox::Ok);
        /*: Explanatory text shown on startup when the settings file could not be written.
            Prompts user to check that we have the ability to write to the file.
            Explains that the user has the option of running without a settings file.*/
        messagebox.setInformativeText(QObject::tr("A fatal error occurred. Check that settings file is writable, or try running with -nosettings."));
        messagebox.setDetailedText(QString::fromStdString(MakeUnorderedList(errors)));
        messagebox.setTextFormat(Qt::PlainText);
        messagebox.setDefaultButton(QMessageBox::Ok);
        messagebox.exec();
        return false;
    }
    return true;
}
void DebugMessageHandler(QtMsgType type, const QMessageLogContext& context, const QString &msg)
{
    Q_UNUSED(context);
    if (type == QtDebugMsg) {
        LogPrint(BCLog::QT, "GUI: %s\n", msg.toStdString());
    } else {
        LogPrintf("GUI: %s\n", msg.toStdString());
    }
}
static int qt_argc = 1;
static const char* qt_argv = "bitcoin-qt";
BitcoinApplication::BitcoinApplication()