A manual reordering of input data and using `Callout` with explicit positions for labels in the setting of  `PlotLabels`:

    slopes = Sort@Table[i Round[Abs[Sin[i]], 0.1], {i, 1, 5, 0.2}];
    mydata = Table[Select[Table[{x, 1 + slope * x^2}, {x, 1, 10, 0.1}], #1[[2]] <= 100 &],
       {slope, slopes}];

    ordering ={1,2,21,20,19,18,17,16,15,14,13,11,12,3,4,10,9,8,7,6,5};
    mydataordered = mydata[[ordering]];
    slopesordered = slopes[[ordering]];
    sc = 100/21;
    xpos = 12;

    ListPlot[mydataordered,
     PlotLabels -> MapIndexed[Callout[#,{xpos, 5 + sc(#2[[1]]-1)}, 
         mydataordered[[All,-1]][[#2[[1]]]], 
         LeaderSize -> {{Automatic, Automatic, 0}, {30, 0 Degree}}]&,
       slopesordered], 
     ImagePadding -> {{Automatic,200}, { Automatic, Automatic}}, 
     ImageSize -> 800, PlotRangeClipping -> False]
[![enter image description here][1]][1]


  [1]: https://i.sstatic.net/8bqfN.png