The only workaround I found back then, was to use protocol v2 (IIRC prepared statements are fully client side in protocol v2?). I noticed recently though that it's not going to be able anymore soon, because the 9.5 backend breaks on the driver passing autocommit=true anyways.
Workarounds exist for v3 as well: for instance, completely disable usage of server-prepared statements.
Alternatively, we could even implement "use server-prepared statement at most 5 times" (so the backend never switches to a generic plan).
I wonder what would be the best way to handle current protocolVersion=2 installations:
1) ignore protocolVersion=2 and just use v3
2) throw exception "A connection could not be made using the requested protocol 2"
Even though #1 might not be that expected, however I believe it will provide smooth migration to never pgjdbc versions without "manual configuration changes here and there"