В общем, на исходе дня я не вижу решения. Возможный вариант - перестать лицемерить, признать, что защиты от перепутывания числа с адресом нет, и не называть тип SIZE типом SIZE, поскольку он на самом деле не обозначает размер чего-то в памяти. Можно даже слить тип SIZE с типом INTEGER, поскольку разницы между ними всё равно никакой почти что нет (в меру моих незнаний). Чтобы энтропия не возрастала, можно перевести INTEGER "системноЗависимоеЦелое", а SIZE - "СистемноЗависимоеЦелое" (с большой буквы). Тогда они останутся разными типами. В перспективе автоматически вставить явные преобразования везде, где происходит превращение SIZE в ADDRESS и обратно.

Тогда остаётся из плохого (для ЯОС), что название ужасно длинное. Оно так и должно быть - потому что в прикладном коде зависимость арифметики от платформы должна быть выписана явно (во всяком случае, таково моё текущее мнение). Т.е. тот, кто применяет этот тип, должен постараться сначала этого избежатЬ, а не пихать этот тип везде. Короткие названия имеют типы платформо-независимые, такие, как цел32 и бцел32.

Вместо системно-зависимого можно было бы, слегка приврав, сказать "машинноеЦелое" или даже мцел, бмцел, или целШС (целое ширины слова). Но выбор перевода не относится к теме данного форума.