i think we should build a cache hashmap in this listener that maps $classname => array('lastModified' => $fieldname) for when a document has the mixin, and $classname => false if not. when several documents (of the same class) are changed, this will make things a lot more efficient.
note that for the classname, we should use Doctrine\Common\Util\ClassUtils::getRealClass to avoid confusion with proxies ($dm->getClassMetadata does that automatically, this is why we did not bother before.)