Hechale un vistazo a la documentación de jquery, que seguro la encuentras interesante.
http://api.jquery.com/category/effects/
fadeIn() a grandes rasgos, lo que hace es un transicion de opacidad (de 0 a 100) que hace que un elemento oculto se muestre.
fadeOut() es lo contrario, hace que el elemento desaparezca con una transicion de 100 a 0 de opacidad.
Por lo que entiendo de tu idea, en ese momento el contenedor deberia desaparecer y no aparecer, por eso pensaba que debia ser alrevez.
lo de los temporizadores, es porque al lanzarlo en el ajaxStart() el temporizador empieza a contar (una vez llamada a la funcion setTimeOut() , se espera los X seg que le indiques, y ejecuta su contenido) pero claro, esto entra en conclicto con el concepto de ajaxStart(), ya que esta funcion se ejecuta al comenzar una llamada ajax, pero como presicamente la gracias de ajax es su a (asincronimus) el programa javascript sigue ejecutandose, por lo tanto tu contador (a 10 seg) esta contando, pero el programa realmente ha enviado ya el mensaje y ha devuelto la respuesta de servidor antes de ese tiempo, disparandose nuevas funciones (ajaxStop, el segundo contador, varias veces que escondes y muestras contadores).
Sinceramente no veo necesario temporizadores en ese script, si sigues la linea que te dije al principio veras que te complicas menos la vida, el script es mas efectivo y gasta menos recursos y peso del script.