After running Hibernate through the debugger, I was able to figure out the problem. Hibernate seemed to be spending a lot of time in each query checking if the loaded entities were dirty and in need of flushing. In my application, the entities were not being modified in any way so they were effectively read-only for my purposes.
It seems you can pass a query hint for each query that specifies that the entities returned from the query should be marked read-only. I'm specifically using @NamedQuery annotations, so the "org.hibernate.readOnly" hint did the trick. See docs here:
http://www.hibernate.org/hib_docs/annot ... ml#d0e1859
The net effect is that now all the entities I'm loading up in my queries are marked read-only and don't require flushing. My data processing loops runs MUCH faster now.
Not sure if there is a better way of handling situation, so I'm open to suggestions.