I would agree with BWill. Your main problem is to define the origin of each polyline. What constitutes a 'river'? Ι would make the assumption that a tributary is an standalone "route" starting from 0-> length of the tributary. Then I would the same for the main rivers, but in this case I would create a merged polyline from all the constituent polylines. I think once you have that you are 'almost' there. Then:
Convert all your merged polylines to Measured polylines (PolylineM) -including the tributaries.
You then have your 'route network'. From then on its a matter of finding the distance along your route for each station. I guess the station locations are defined in XYs? Also- another guess- they dont fall exactly on top of the river, do they?
In any case you will need a way of finding the distance of the station from the beginning of each river or triburary. In theory, if a station is on the intersection of the river and the tributary it may have 2 locations (one for each).
To find this location you can use ArcMap tools but haven't use them for a while so cant remember of the top of my head. On the other hand if you import your shapefiles (?) into PostGIS you could use the ST_Line_Locate_Point. This function:
Returns a float between 0 and 1 representing the location of the
closest point on LineString to the given Point, as a fraction of total
2d line length.
Which means you can then find the location along the river multiplying what you find with the (merged) river length. A final note- If you use PostGIS you dont have to go through the step of creating the PolylineM- only ArcGIS requires this for linear referencing.
Hope this makes sense!