I don't quite see how these dynamic library shenanigans are better than a wrapper script. If a fork() that a shell wrapper would do, sounds like an too expensive syscall, simply write a c wrapper, that directly calls execvp() which keeps the process and just replaces the running binary with another one. I don't know and didn't bother to research, but I can't imagine that execvp() is much more expensive than dlopen() anyway.
However, eventually I don't see why lua -51 is any better in a script compared to say lua-51 or simply ${LUA} which is a variable to what lua you detected before, or been configured for.