A simple approach would be to teach the app classloader to read JMODs and extract native libraries on the fly, and to preferentially check a certain sub-directory for classes before others (for OS-specific class files).
The original Jigsaw JEPs put that out of scope but it's what people make their JARs do anyway. Revisiting and formalizing that would allow existing tools to simply treat jmods as modular jars, which is a very minimal change to their code, and then jlink can continue pre-extracting libraries for startup time improvements, signing etc.