Problem solved. I am an idiot and didnt read the docs properly at 2am.
(Answer for anyone else trying to figure this out is to override the org/jbpm/context/exe/jbpm.varmapping.xml file with your own jbpm.varmapping.xml in the classpath.)
However, I am surprised that it doesn't automatically read the hibernate cfg and use the HibernateLongInstance or HibernateStringInstance as a default for any Hibernate object with a Long or String key.
For the moment, I'll just add creation of the jbpm.varmapping.xml file to the script that builds my POJOs from Hibernate configs, but I could work on a patch for auto-detecting if others agree this should be default behavior.
Happy New Year!