During the development of the new player controller I realised that the order of the physics events was wrong. Fixed update was happening after the physics step, so any changes made it in were only reflected in the next tick.
So I fixed that, and then it became apparent that sometimes you want to do stuff explicitly after the physics step. So I added
IScenePhysicsEvents to solve that.