THANK YOU Mauricio, your info about fireUntilHalt causing problems with persistence & competing threads is the EXACT problem I've been having for the past week or so.
I had assumed (incorrectly) I needed to call fireUntilHalt after starting my session, but was getting some very odd race-condition like behavior once the session was retrieved via JPA (intermitttent 1-3 processInstances would fail with a NPE out of 150+). Not calling fireUntilHalt before persisting (or at all actually) seems to have cleared the issue right up.