I noticed momentum feels like it doesn't exist.
Correct-up-to-second-order updates would use
newVelocity=calcNewVelocity(oldVelocity, timestep)
position=position+((newVelocity+oldVelocity)>>1)*timestep
Might make acceleration less abrupt and should be cheap to do.
calcNewVelocity can include anything from player input, acceleration/gravity, etc.