Renaming the main thread (e.g., the one the program spawns with) causes the name of the daemon in utilities such as "top" to show as "b-init" instead of bitcoind. This is surprising, as it doesn't show the other thread names (by default), you'd expect it to show program names.

This doesn't only affect top: killall does no longer recognize the program name
```
$ killall bitcoind
bitcoind: no process found
$ killall b-init
(no output, succesful)
```

~~In contrast to `bitcoin-qt`, which doesn't suffer from this problem because it has a separate init thread~~, initialization happens in the main thread in `bitcoind`, and it's renamed due to `util::ThreadRename("init");` in `AppInit`. If we want to name the init thread, this should only be done in `bitcoin-qt`.

(not sure when this was introduced, but #16984 made the issue more visible because ther's no bitcoin in the name anymore)
else
        {
            strUsage += "\nUsage:  bitcoind [options]                     Start " PACKAGE_NAME "\n";
            strUsage += "\n" + gArgs.GetHelpMessage();
        }
        tfm::format(std::cout, "%s", strUsage.c_str());
        return true;
    }
    try
    {
        if (!CheckDataDirOption()) {
            return InitError(strprintf("Specified data directory \"%s\" does not exist.\n", gArgs.GetArg("-datadir", "")));
        }
        if (!gArgs.ReadConfigFiles(error, true)) {
            return InitError(strprintf("Error reading configuration file: %s\n", error));
        }
        
        try {
            SelectParams(gArgs.GetChainName());
        } catch (const std::exception& e) {
            return InitError(strprintf("%s\n", e.what()));
        }
        
        for (int i = 1; i < argc; i++) {
            if (!IsSwitchChar(argv[i][0])) {
                return InitError(strprintf("Command line contains unexpected token '%s', see bitcoind -h for a list of options.\n", argv[i]));
            }
        }
        
        gArgs.SoftSetBoolArg("-server", true);