Mike,
Your technique is how I create reaches along rivers, so you are not the only guy out there struggling! In the past I've tended to scale the reach by something like strahler order or catchment size. This method will generate overlapping reaches.
Your existing 10m long line events will have the route ID and a start/end measure. You could try to start with the line nearest to the source and track downstream and identify when there is a big change in slope and identify that as your reach break? Thus lots of small changes in slow would be aggregated into a single reach. I'm not sure how this will work at tributary junctions at depends how you built your route layer.
This will certainly require some coding by you.
Duncan