Хотеть не вредно, но надо быть проще, т.к. наш проект низкобюджетный. Значит, нужно два новых "системных флага" для параметра или что-то в этом роде:

DYNAMICALLY_TYPED - оборачивает фактический параметр в выделенный (на куче?) вариант, подобно тому, как это делает ITEM. Внутри процедуры имеем дело уже с вариантом.

DYNAMICALLY_TYPED_&REST - преобразует все остальные параметры в список или массив вариантов.
Количество параметров - произвольное. В простейшем случае, такой параметр несовместим с другими параметрами и может присутствовать в сигнатуре только в одиночестве.

Такое, наверное, получится сделать и без революций. У нас не будет при этом статического контроля типов и будет выделение в куче. Но это придётся потерпеть.