Actually this is probably too late, but the problem is quite simple:
hibernate.c3p0.idle_test_periods
must not be higher than hibernate.c3p0.timeout
or connections closed by the database will not be properly detected.
Moreover, the deadlock detection warnings look like some part of your code is not properly returning the connections to the pool (i.e. session.close())
The MysqlIO exceptions occur when your application idles and MySQL closes the connection on the server. Now if C3P0 does not properly check whether a connection is still actually connected you get the EOFExceptions.
I hope this might be helpful.