If by "The root instance is common to each thread" you mean that the same root instance is shared by all threads then this would explain the exceptions you are getting. I suspect that the EntityManager that loaded this root instance is being closed by one of the threads before the other threads have finished using it. When you access an instance and the EntityManager that loaded the instance is closed you can get the exceptions that you encounted.
To fix this issue you could have each thread load its own root instance using its own EntityManager. Another way is to turn off lazy loading for the associations you are accessing (see
http://www.hibernate.org/hib_docs/v3/reference/en/html_single/#performance-fetching-lazy) or eagerly fetch the associated objects (read about "fetch" joins at
http://www.hibernate.org/hib_docs/v3/reference/en/html_single/#queryhql-joins).
I'm not sure whether what you have done is a valid use of JPA or not.
Hope that helps