https://www.3dbrew.org/wiki/NSS:LaunchApplicationFIRM
The launcher (Home or any other app with the right permissions) just asks for a title to be run and the caveat that a different kernel may be required, the currently running kernel and the called one do all the real work
https://www.3dbrew.org/wiki/FIRM#FIRM_Launch_Parameters
The newly run kernel can receive parameters (mainly TitleID of the requested app and memory layout) by checking fixed positions in RAM
If you were really bored, you could (at least on paper) package a .firm homebrew (one that runs if flashed directly as kernel, or any?) as a fifth/sixth/etc kernel, then also create a forwarder that requests being run with that kernel...