1.) I don't get your question
2.) Yes, query results can be cached. Pretty much everything can be cached in Hibernate.
3.) The recommended approach is to do the transaction handling in some interceptor-like approach (A Servlet Filter, Session Facades using CMT or some Appserver-Interceptor).
4.) No, Hibernate is completely free under the LGPL - see
http://www.hibernate.org/196.html
5.) This is a long issue. ORMs in general are not very ideal for "mass operations" like massive deltes, updates, etc. even though H3 is much more convenient in that are through bulk updates and deletes. Also an ORM is often overkill when you have a purely "tabular" application, without a need for a real domain model.
I don't have much time to elaborate further - consider getting a copy of Hibernate in Action, especially your architectural questions are pretty well covered there.