Remove the need for rectypes by using polymorphic variants

`-rectypes` forces users to use `-rectypes`, too, and it's a bit dangerous. This gets around the `-rectypes` contagion by (ab)using polymorphic variants.