Sorry to posting this comment so late (maybe consider for 4.3.x).  If performance is impacted, perhaps we could defer to a platform callback that determines if the current thread is a background thread or not.  

I'm not yet sure what I will on the AS7 container side, but I need a way to immediately tell if the current thread is a "Transaction Reaper Worker N" thread.  No promises yet but if I can nail that down, I could also implement the above callback to help Hibernate know the same.  Other JTA environments could possibly provide the same or use this current patch as the default if there is no better way.