use PropertyAccess instead of straight reflection

this is not only cleaner and more safe, it also avoids issues with reflection not triggering the doctrine proxy to populate.

this is adding no new dependency, we already depend on PropertyAccess.