It's been my experience that simulating gravity using phent_addforce IS NOT the same as setting your grav_vec.

I was trying to remember where I saw your behaiviour in my code and this was it; when I manually set grav (using phent_add), I too got that shaky bouncybehaiviour when I "landed" on the gound. My final conclusion was that the Physics Engine kept trying to pull the object down to the ground and this set up all kinds of nasty instabilitys with bouncing and shaking. In other words, I was unable to have an object stabling pushing on another surface. You could set your elasticity to 0 and this would stabilize your gravity, but as you said, then you wouldn't be able to bounce off walls.

Some things to try out:

1) play around with ph_setcorrections. Make it unforgiving (ie a high correction value) and it might stabilize your movement. If using the physics engine, it's good to familirize yourself and optimize the ph_setcorrections since the default values ofter aren't good enough for our projects.

2) You might want to turn on gravity to have your player be smooth and then apply a phent_addGLOBALforce (needs to be global since gravity is global) pointing up (opposite the direction of your grav_vec) to all other object to counteract gravity and thus simulate null grav. This way, your player will be the only one to fall under gravity, but your other entities should move as it there was no gravity. Not sure about this method though