I hope I didn't misunderstand your question. As I see it, you have the arc length directly accessible because you have points with lines in between. This means the Norm between two points gives you the length of this section.
Here an example with increasing line lengths between the points
vertices = Table[{x, x*Sin[Pi x/2]}, {x, 0, 10}]; ListLinePlot[vertices]

Using Accumulate, Partition, and Norm, you can create a list of the total so-far length in each point, where we prepend a zero at the front. Since we are not interested in the total length, we can divide this by the Total to get a list that starts with 0 and ends with 1 and all other values in the list represents the fraction of the "curve"-length we have already visited:
accum = Accumulate[#]/Total[#] &@ Prepend[Norm[Subtract @@ #] & /@ Partition[vertices, 2, 1] , 0]
Funny enough, for this discrete list, this is already our arc length parametrization and we only need to feed it into a linear interpolation, where accum is our s(t) in the usual sense
ipp = Interpolation[Transpose[{accum, vertices}], InterpolationOrder -> 1]
I hope I didn't make some stupid mistake, but that be all you need
Manipulate[ Graphics[{ Line[vertices], Blue, PointSize[0.03], Point[ipp[t]], PointSize[0.01], Red, Point@Table[ipp[tt], {tt, 0, t, .02}] }], {t, 0, 1} ]

Since all you need is one linear interpolating function, this works reasonably fast even for many points.
Appendix
As explained in the comments, you can create a function that gives you the points for drawing the lines for an arbitrary t. Count how many entries in accum are <t. You simply want to include those first n points from your vertices. The last point, which is in the middle of two vertices can be calculated using the interpolating function.
vertices = Table[{x, x*Sin[Pi x/2]}, {x, 0, 10}]; create[points_] := With[{ pts = N[points], accum = Accumulate[#]/Total[#] &[Prepend[Norm /@ Differences[N[points]], 0]] }, With[{ip = Interpolation[Transpose[{accum, pts}], InterpolationOrder -> 1]}, Function[t, Module[{p = pts, acc = accum}, Which[ t <= 0, p[[{1}]], t >= 1, p, True, Append[Pick[p, Negative[acc - t]], ip[t]] ] ] ] ] ]
Then you can use
f = create[vertices]; Manipulate[ Graphics[ {Line[vertices], Red, Thick, Line[f[t]] }], {t, 0, 1} ]