Since Thales wanted an extension of the improved FindAllCrossings[] to roots that are also extrema, here is an implementation based on PeakDetect[] to find the non-crossing roots:
Options[FindAllRoots] = Sort[Join[Options[FindRoot], {MaxRecursion -> Automatic, PerformanceGoal :> $PerformanceGoal,
PlotPoints -> Automatic, Tolerance -> Automatic}]];
FindAllRoots[f_, {t_, a_, b_}, opts : OptionsPattern[]] :=
Module[{op, plt, prec, r, r1, r2, tol, v, xa, ya},
prec = OptionValue[WorkingPrecision];
plt = Normal[Plot[f, {t, a, b}, MeshFunctions -> (#2 &), Mesh -> {{0}}, Method -> Automatic,
Evaluate[Sequence @@ FilterRules[Join[{opts}, Options[FindAllRoots]], Options[Plot]]]]];
r1 = Cases[plt, Point[p_] :> SetPrecision[p[[1]], prec], Infinity];
{xa, ya} = Transpose[First[Cases[plt, Line[l_] :> l, Infinity]]];
op = Join[Pick[xa, PeakDetect[-ya], 1], Pick[xa, PeakDetect[ya], 1]];
v = Function[t, f] /@ op;
tol = OptionValue[Tolerance]; If[tol === Automatic, tol = Max[v] $MachineEpsilon^(1/3)];
r2 = SetPrecision[Pick[op, Thread[Abs[v] <= tol]], prec];
r = Join[r1, r2];
If[r =!= {},
Union[Select[t /. Map[FindRoot[f, {t, #}, Evaluate[Sequence @@ FilterRules[Join[{opts},
Options[FindAllRoots]], Options[FindRoot]]]] &,
r], a <= # <= b &]], {}]]
This should work on Thales's original example.