Is there anything obvious I'm missing here? My code is a bit too long to post here, if anyone thinks it helps I can try to build a small example java agent that shows the problem and link to it here.
No. If you mask out a native method, there is no longer any way to call it from JNI. You need to call the method using native code. (I have not idea what that is, but I would be surprised if it is not possible)
Another option is to change all the references to the native method instead of mask it out. That way you can still call the original method when you choose to.