Using code from the mentioned 9447, with some patches
data = Transpose@{{"First", "Second", "Third"}, Table[Accumulate[RandomReal[{-1, 1}, 500]], {3}]};
hover[data_] :=
Module[{mouse},
mouse = MousePosition[{"Graphics", Graphics}, {99999, 99999}];
{Text[Style[Framed@Column[
(Row[{#[[1]], ": ", #[[2, Min[Length@#[[2]], Max[1, Round[mouse[[1]]]]]]]}]) & /@ data],
Background -> LightYellow, FontSize -> 16],
mouse, {-1.1, 2}],
PointSize[Large],
Point[{Min[Length@#[[2]],
Max[1, Round[mouse[[1]]]]], #[[2,
Min[Length@#[[2]], Max[1, Round[mouse[[1]]]]]]]}] & /@ data
}
]
ListLinePlot[#[[All, 2]], Epilog -> Dynamic@hover[#], PlotLegends -> #[[All, 1]]]& @ data

There is some styling to do, but this could be useful as a starting point! I tried to be as verbose as possible... ugly but easier to poke around!
Lazy saturday update
A slightly prettier version that hop's on the Plot's styles and legends. Also better mirrors your example. And uses Clip!
addHover[plot_Legended] :=
DynamicModule[{mouse, legend, data, newPlot},
legend =
plot /. Legended[a_, Placed[b_, __]] :> List @@ b /.
HoldPattern[h : Except[LegendMarkers] -> _] :> Sequence[] /.
HoldPattern[Rule[_, b_]] -> List@b // Flatten[#, {{2}, {1}}] &;
data = Cases[First@plot, Line[x__] -> x, Infinity];
newPlot = plot;
newPlot[[1, 2]] = Append[plot[[1, 2]], Epilog ->
{Text[Style[Framed[Grid[{
{Dynamic@Clip[Round@MousePosition["Graphics", {99999, 99999}][[1]], {1,Infinity}]},
Sequence @@ MapThread[
{Row@{Style[Dynamic@#2[[2]], #2[[1]]], ": ",
Text[Dynamic@#1[[Clip[Round@MousePosition["Graphics", {99999, 99999}][[1]], {1,Length@#1}]]][[2]]]}} &
, {data, legend}]},
Alignment -> Left,
Spacings -> 0],
FrameStyle -> LightBlue, RoundingRadius -> 10],
Background -> Opacity[0.8, White], FontSize -> 12],
Dynamic@MousePosition["Graphics", {99999, 99999}], {-1.5, 0}],
MapThread[
{#2[[1]] /. a_ /; ColorQ@a :> Darker@a,
PointSize[0.012],
Point[Dynamic@#1[[Clip[Round@MousePosition["Graphics", {99999, 99999}][[1]], {1, Length@#1}]]]]} &,
{data, legend}]
}];
newPlot
]
Now data remains unaltered!
data2 = Table[Accumulate[RandomReal[{-1, 1}, 500]], {3}]
ListLinePlot[data2, PlotLegends -> {"First", "Second", "Third"} , PlotStyle -> {Orange, Dashed, Thick}] // addHover

It will probably break if you try it with fancier plots, use DataRange or stare long enough.
There is still some important aspects missing, such as mirroring PlotMarkers, but I couldn't manage to avoid distortion when Show
ing or Epilog
ing anything that is not a Point
.