How about doing a Unite using the geometry to subtract as the tool and choosing to keep the tool.
Then do a Subtract of the kept tool from the body that resulted from the Unite.
My simple test seemed to work OK.
Dell 7530 Precision, Win10, 32GB. Developing in: Java | C | KFProduction: [NX12.0.2 MP1]
What's wrong with using Trim feature? It can be used to the same effect as Subtraction. Perhaps not in the 100% of cases, but in great many of them.