I'll answer 1 of your questions. If you only have 35 lines per basin, query by basin type, sort your table, and select the 5 lowest elevations. Done. For 35 records per basin, is it worth the effort to automate?
If you had more records to deal with, I would suggest creating summary statistics and using them to create a nested SQL query to select the 5 lowest elevations in each basin. If you're interested, there is documentation on that here:
Summary Stats: http://resources.arcgis.com/en/help/main/10.1/index.html#//00080000001z000000
Grouping with summary stats: Perform a group by query on geodatabase in ArcMapPerform a group by query on geodatabase in ArcMap
If you need to assign the basins to the lines, use the intersect tool and set Join Attributes to ALL.