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)
{
#if defined(PR_SET_NAME)
    
    ::prctl(PR_SET_NAME, name, 0, 0, 0);
#elif (defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__))
    pthread_set_name_np(pthread_self(), name);
#elif defined(MAC_OSX)
    pthread_setname_np(name);
#else
    
    (void)name;
#endif
}
#if defined(HAVE_THREAD_LOCAL)
static thread_local std::string g_thread_name;
const std::string& util::ThreadGetInternalName() { return g_thread_name; }
static void SetInternalName(std::string name) { g_thread_name = std::move(name); }
#else
static const std::string empty_string;
const std::string& util::ThreadGetInternalName() { return empty_string; }
static void SetInternalName(std::string name) { }
#endif
void util::ThreadRename(std::string&& name)
{
    SetThreadName(("b-" + name).c_str());
    SetInternalName(std::move(name));
}