I have done something similar for centrelines over canals and natural watercourses. The approach that I used was to TIN the points, bisect the TIN then create a second TIN from the original vertices and the bisectors then traverse using a modified Dijkstra's algorithm discarding options as soon as it is evident that they will not form the most simple solution. The modification was that the line could terminate at the 'solution' point or a previous path should one already exist. There is no out-of-the-box solution for this and if you're not a programmer or at least in a position to get on the good side of one your only option is to trace with an offset into a geodatabase and look at the shape_length field.
TIN = Triangular Irregular Network, a lattice of points and connecting lines such that each point is connected to its closest neighbors and no lines intersect. For this see http://en.wikipedia.org/wiki/Delaunay_triangulation. I didn't use the ESRI TIN objects, instead I found some code for triangulation and kept them in memory, something like http://www.codeproject.com/Articles/492435/Delaunay-Triangulation-For-Fast-Mesh-Generation.
For the shortest path algorithm see http://en.wikipedia.org/wiki/Dijkstra's_algorithm it has a nice picture; despite the complicated name it is really quite simple.
From the points forming the lines I did a Delaunay triangulation then found the mid point of each edge of the triangle (basic geometry... average X, average Y) and then inserted the points that fell within the polygons into the mesh which gives a centre path and links to all vertices on the boundary. Then excluding facets that follow the banks of the watercourse trace the network using Dijkstra's algorithm and you will eventually find a path from point A to point B running approximately down the centre of the watercourses. There will be a lot of possible paths so I kept a weight on each apex and stopped a path when the cumulative length exceeded the length already recorded, and if it was less then update the apex with the shorter cumulative length - this reduces the amount of paths that are traced, and there may be quite a lot; in the end I needed to multi thread the application to get reasonable response times.
Alternately, once triangulated, you could turn the triangles' edges into two point lines as a feature class, build a network and then do a trace. I'm sure that the ESRI tracing routines are much quicker than mine but I had a specific need and couldn't solve it using geometric networks.