One thing I've done in a project before was statically linking all of my native library's dependencies into the library itself. Everything would be compiled with `-ffunction-sections -fdata-sections` and the final shared library linked with `-Wl,--gc-sections`. I'd call `strip` on the `.so` as well.
This worked well because the JVM code only ever called the native API I exposed and did not need to access the dependencies' APIs.