JDBC has some "batch-oriented" APIs which should help in the heavy-write workloads. These should help ammortize the RPC cost of repeated PrepareAndExecuteRequests and ExecuteRequests.
Through some of the recent performance work,
CALCITE-1091, I think we're getting close to the limit of what is possible given our current server implementation (both in terms of HTTP-based clients and deserialization in POJOs). The thought is that we will get some better throughput if we reduce the total number of RPCs.