Tuvimos el mismo problema en un sistema de producción con Tomcat6+Hibernate+MySQL (y Spring en nuestro caso) y la única solución confiable que encontramos fue establecer el tiempo de espera de la conexión en un valor alto en la configuración de MySQL. No recuerdo los detalles, pero creo que hubo un problema con el commons-pool subyacente. código cuando verifica que el recurso agrupado es válido.
Otra posibilidad que no probamos fue usar un mecanismo de agrupación de conexiones alternativo que no sea DBCP. El siguiente intento sería C3PO