Your JbpmDAOHibernate.loadProcessInstance method loads the process instance in a session, and then closes it and opens a new one.
The returned instance is not associated with the new session, thus causing the lazy initialization problem. If you kept the session that loaded the process instance open (by removing your call to regenerateJbpmSessionAndTransaction) the problem would dissapear.