There are many ways to alter horizontal speed when jumping. How you want to do it it's up you.
In your event #2 where you reset velocityY before applying impulse, you can set X component of the velocity to one of these values:
1. Player.Physics.VelocityX*0.75
this will decrease horizontal speed by 25% for any jump.
2. Player.Physics.VelocityX+(Player.Physics.VelocityY/2)
this will decrease the speed if ball is rolling up, increase the speed if ball is rolling down, have no effect if ball is rolling forward.
The bigger is the slope angle, the more is the increase/decrease in speed.
3. Player.Physics.VelocityX-abs(Player.Physics.VelocityY/2)
this will decrease the speed if ball is rolling up or down
4. Player.Physics.VelocityX+min(Player.Physics.VelocityY/2, 0)
this will decrease the speed only if ball is rolling up
Note, that if hill angle is very steep, the ball can actually stop or move backwards on jump. You can add clamp() to these formulas to prevent this from happening. For example:
Player.Physics.VelocityX+clamp(Player.Physics.VelocityY/2, -100, 0)
Of course you can choose different values instead of "/2" and "*0.75"
And you'll probably need to make adjustments to some parts of your layout as the length of jumps will change.
One more thing - don't use huge sprites for background, use TiledBackground.