Bueno es la primera vez que escribo creo xD espero ser de ayuda.
Una opción sencilla podría ser usar un bundle de extensiones de Doctrine que puedes decir que sean timestampables. Lo puedes ver en la documentación de symfony:
http://symfony.com/doc/master/cookbook/doctrine/common_extensions.htmlsi lo quieres hacer por tu propia cuenta usando los HasLifecycleCallbacks pero sí, tiene el inconveniente de tener que hacerlo uno a uno a mano. (ahora me entra la duda si se podría hacer una clase entidad padre que tenga estos campos comunes y que todos extiendan de ella... pero bueno son invenciones mías xD)
Sobre lo que estas haciendo creo que debería funcionar (no tienes que añadir esos campos al Type pues no los usaras) aunque creo que podrías llamar directamente a setUpdateAt sin crear un método intermedio. yo creo que una vez utilice algo así para ejectuar algo en el update de ciertas entidades... pero no me acuerdo ahora si guardaba algo en la base de datos o no. Sin mucho conocimiento del tema mirando tu código están vien los argumentos del preUpdate? me suenan que esos eran para el persist, yo creo que usaba PreUpdateEventArgs, aunque me suena que ami me tiraba error, nose...