You cannot currently forbid the user to select weeks/months/years/quarters instead of days.
However, as for the singular/plural solution, the solution is easy: use your (number-based) data-expression instead of your (duration-based) datafield, so
@one-else(#concept3^return-after-termination-as-number, #-workday, @plural(#-workday)
@one-else(#concept3^return-after-termination, #-workday, @plural(#-workday)
The reason is subtle, but as follows.
@one-else expects a number as its first argument. When you pass a duration instead (i.e., your duration-based datafield) as the first parameter, then you are offering apples while oranges were kind of expected. The software tries to do something useful here (instead of just returning an error), and simply extracts the number currently present in the duration.
This works fine in your particular situation as long as your users work with days, but obviously breaks down when they switch to weeks/months/years/quarters. You are therefore advised to perform a manual conversion, as you did within the data-expression (where you explicitly convert from duration to days).
In general, you should always check what data type is expected by some particular function, otherwise you will encounter other surprises. You can always check the data type on https://help.clausebase.com/kb/special-functions/, or by pressing Ctrl-space when your cursor is within the parentheses of a special function and looking at the popup window. Below you can see the suggestions for @one-else.