Fixes #35785.
install_binary_component() installs the launcher to CMAKE_INSTALL_BINDIR, and install_binary_component(... INTERNAL) installs bitcoin-node, bitcoin-gui, bitcoin-chainstate (and the test/bench internals) to CMAKE_INSTALL_LIBEXECDIR, but the launcher looked for them in a hardcoded libexec directory next to a hardcoded bin directory. Those only agree for the default values, so an install configured with different ones (e.g. Arch's -DCMAKE_INSTALL_LIBEXECDIR=lib) cannot run any of them:
$ /usr/bin/bitcoin -m node --version
Error: execvp failed to execute '/usr/bin/bitcoin-node': No such file or directory
The first commit compiles the launcher with both configured directories. Only the last component of CMAKE_INSTALL_BINDIR is compared, because that is all the launcher can see of the directory it was installed to.
The second commit covers this in tool_bitcoin.py. The existing checks run out of the build tree, where every executable sits next to the launcher. The new check builds a layout that looks like an install prefix and only provides bitcoind under the configured directories, plus the cases of a different bin and a different libexec directory, so that neither is searched.
Test plan
cmake -B build -DCMAKE_INSTALL_PREFIX=/tmp/btc -DCMAKE_INSTALL_BINDIR=sbin -DCMAKE_INSTALL_LIBEXECDIR=lib && cmake --build build && cmake --install build
/tmp/btc/sbin/bitcoin -m node --version
On master the last command prints the execvp error; with this branch it prints the version. The same holds with only -DCMAKE_INSTALL_LIBEXECDIR=lib and the default bindir.