You say JDBC is slow, but what if you're using PreparedStatements and PreparedStatement caching? Isn't that similar?
The biggest thing you lose with JDBC over the native VoltDB clients is better cluster awareness. In our native client you can get callbacks when servers fail, when backpressure is triggered, etc…
Now Hibernate over JDBC is another issue.
Edit: As merb points out JDBC is synchronous. This is true; if you have one client and one thread, this will be limiting fast. It's not a server-side issue though. If you have enough clients and/or enough threads, then you can still get very high throughput.
It makes sense that no matter the context, forcing the DB engine to parse and plan SQL it hasn't seen before could be quite a bit slower than parsing/planning it once and swapping in new parameters for each query.