Block[{Solve, conds},
Unprotect[Solve];
Solve[e_, v_] :=
With[{res = Reduce[e, v]},
conds =
res /. Equal[var_?(MemberQ[Flatten[{v}], #] &), __] :>
Sequence[];
{
Cases[res,
var_?(MemberQ[Flatten[{v}], #] &) == rhs_ :> Rule[var, rhs],
Infinity]
}
];
Transpose[{DSolve[u'[t] == u[t]/(4 + u[t]^2), u[t], t][[1]],
List @@ LogicalExpand[conds]}]
]