Speed of the consist's elements is proportional to distance. There's still a bit of a rubberband effect, but I think it's OK for a snake-like thing.
segment.speed = math.max((distance-1) * speed,speed/4)
So when an element is 2 tiles away, it's moving at 100% speed. If it's more than 2 tiles away, it will go faster to catch up.