Good, then I think we can agree on maybe one thing:
$input should always be modal by default. Specifically, there seems to be an inconsistency in that $input becomes modeless if activated from a DIALOG event. I think this is really the underlying bug that you're after here-- not the behaviour of the u switch. If $input is modal by default (and u doesn't activate modality) then your script would work as it should-- with or without the u switch.
The only problem I foresee with making such a change is regarding backwards compat. There may actually be a fairly large number of scripts out there that use $inputs from custom dialogs-- not sure how many of those scripts rely on a modeless $input, though. That number may actually be much smaller.
A fair compromise might be adding an extra switch in $input to force the dialog created by $input to always be modal.. let's pick 'z' for now. Using $input(Hello,z) would always yield a modal dialog, whether it's initiated from a channel or from a dialog. A counterpart could be made to create a modeless dialog, say 'c' (not many letters left in $input). An $input(Hello,c) would create a modeless dialog regardless of whether it was created from a channel or dialog. Not sure whether the modeless part is technically feasible from the POV of the event processing queue, though.
In either case (make $input modal by default or add an extra modal switch), the u switch should no longer make the $input modal. It should only do what the help file describes, and that is associate the currently active window as the parent.