After 20+ years, we must admit a defeat and agree that the external world wants -ldl to work.
Create libdl.so.1 as a filter for lbc.so.7 which exports public dl* functions. The functions are resolved from the rtld instead, the goal of creating library is to avoid errors from the static linker due to missed libdl. For static binaries, I compile empty .o into libdl.a so that static binaries still get dl stubs from libc.a.
This should reduce the need to patch out -ldl from naive builds, and reduce the need to fix errors regarding detection of -ldl from less naive. I do not expect that libdl.so will be used by base system.