Even though I don't know a direct answer to your question, I can't resist answering indirectly:
I heard that if you want to make certain parts of your python programs faster, or if a certain part of the program was really hurting your program's performance, you write them in C, and make Python call them.
As written in the topmost answer of the SO question you linked to, "slow" here means tens of nanoseconds. If your expensive part (written in C) takes even one microsecond to execute, then the proportional cost of the C/JNI interface is negligible. The cost only comes whenever you call the native part (and when the call returns), not while the native part is executing. If you keep the number of calls low, then the extra cost is low. That is, don't write tight Python loops that call C functions; do write the loop itself in C and call it from Python.
As another example that the JNI costs are usually negligible: many of JDK's core classes, e.g. most functions in Math, and ultimately all graphics and I/O functions map to JNI calls under the hood. Regardless, Java is usually considered to be way faster than CPython.