I think this is not even the problem of hibernate itself. It would be simpler if your connection pool served a properly setup connection (with default schema set).
If you'd like to try this approach there is a silmilar solution in spring for a connection pool that serves connections that are authenticated with different credentials. This approach uses ThreadLocals to store username/password.
see
http://www.springframework.org/docs/api/org/springframework/jdbc/datasource/UserCredentialsDataSourceAdapter.html
especially:
http://www.springframework.org/docs/api/org/springframework/jdbc/datasource/UserCredentialsDataSourceAdapter.html#setCredentialsForCurrentThread(java.lang.String,%20java.lang.String)
you could implement similar adapter that would call a target datasource and than set a proper schema using a simple sql statement.
did that help?