Complex movement and speeds on curves

I know how to animate objects on path curves. I also know how to key the evaluation time, in order to influence speeds and change where an object is located on the curve at a given frame. Still, I have trouble understanding how I can properly and accurately determine non-linear movement of a character or object.

Here’s an idea: You have a character who walks up to a hill, walks down that hill, then appears behind a distant rock as the camera angle changes (to simulate a few seconds passing off-screen). First of all, you want the character to walk faster once it starts going down the hill, so you have to change the animation speed. Second, you’ll want the character to teleport from one point on the curve (the end of the hill) to another point on the curve (the rock) in one frame.

Now this is possible by simply keying the evaluation time, but IMO that’s less flexible as well as inaccurate. I was hoping there’s a way to give each segment on the curve a speed. So no matter what changes you make to the curve points or on the timeline later, the character always goes slower / faster on that piece of the path. Also, is it possible to snap the character between disconnected curves? So when it reaches the end of one “wire”, it jumps to the start of the next one (all segments on the same path object).

Follow Path constraint have “Target Curve” field and “Influence” bar. So you can have bunch of Follow Path constraint pointed to different curves and be able to choose given constraint to be active by setting influence to one. All the other influence needs to be set to zero.