pgbouncer начал поддерживать prepared statements
совсем недавно и в ограниченном объёме. Если есть возможность - лучше от них избавиться.
В целом в вашем случае пулер - то, что нужно. Если приложение не умеет само вовремя отключаться от базы, пусть лучше занимает слоты у pgbouncer.
Принудительно рубить idle коннекты я бы не стал, но в целом это делается вот этим параметром:
client_idle_timeout
Client connections idling longer than this many seconds are closed. This should be larger than the client-side connection lifetime settings, and only used for network problems.
Default: 0.0 (disabled)