If you want perfect terrain contact at all times then you need to stop applying Box2D collision response to the player, and apply your own physics rules, because what you describe is not compatible with newtonian physics rules, which are the rules that Box2D follows.
However, you can get pretty close, while still using newtonian physics.
Increase the mass of the player to something large, and apply some downward force to the player.
Do not make the player's mass too large relative to other objects though, as large mass differences can result in large floating point errors and poor collision response.
Start with a small amount of mass, and gradually increase it until you find something that works while the simulation remains stable.
As you increase the mass of the player, increase the amount of downward force applied to the player at each frame. I'm not very familiar with Box2D, but this can probably be done with an impulse that is applied to the player every physics update.
Keep in mind that this means that all objects interacting with the player are not going to move the player very much unless they are also heavy, like your player is.
Note that you're going to have to increase the size of the impulse you apply to the player to make him move, as you increase the mass of the player, if you want him to continue at the same speed.
Keep in mind that the hero will have higher inertia with higher mass, so you have to decide if you want the hero to keep moving after the player moves him to the right a little. If not, try increasing friction forces on the player.