GetPlayerVelocity

Pretty accurate. There is some rounding funkiness going on when you only strafe, but otherwise it seems to work quite well.