Тэгированный указатель и всё такое.

Да, идея оказалась работоспособной.
Погуглил и убедился, что не я один такой умный - довольно много где применяется.
Правда, пришлось довольно много кода перелопатить и процесс ещё не завершён, но переделанное - уже снова работает :)

Теперь система точно знает - если младший бит указателя равен 1, то это указатель на список (и чтобы получить "настоящее значение", младший бит надо занулить). Упрынципи, второй бит тоже можно под что-то заюзать, но я не могу придумать, зачем бы э.. ээ ...

WAIT

под garbage collector, конечно же!

правда, до его появления ещё пилить и пилить