Abbiamo riscontrato lo stesso problema in un sistema di produzione con Tomcat6+Hibernate+MySQL (e Spring nel nostro caso) e l'unica soluzione affidabile che abbiamo trovato è stata quella di impostare il timeout della connessione su un valore elevato nella configurazione di MySQL. Non riesco a ricordare i dettagli, ma credo che ci fosse un problema con il sottostante commons-pool codice quando verifica che la risorsa in pool sia valida.
Un'altra possibilità che non abbiamo provato è stata quella di utilizzare un meccanismo di pool di connessioni alternativo diverso da DBCP. Il prossimo tentativo sarebbe C3PO