Maybe im not answering on your question, anyway, here's couple of thoughts:
Is it normal that if i pressed jump only for a moment, and before i am again on the ground my speed is 150,200 again, right in the air?
And for animation of running - in classic Mario games your animation speed start growing up as you gaining speed, and in your case to get animation run i need to hold shift at least for 2 seconds?
If your animation of walking and jumping is the same, only anim.speed is vary, why dont you use only walk animation, with condition like "animspeed=mario speed/100(or 200,300, any other)"?