Dear Tom,
I think there are three other possible ways of encoding polymorphism:
1 - Putting the polymorphic condition as character and presence/absence as states.
For example: I work with a group of parasitoid wasps that exist species with apteros, micropterous and macropterous forms. Then you can insert a wing polymorphism as character, and present/absent as states;
2 - You can also separate all polymorphic forms as characters and then the present/absent states. Following the example above, the character 01: macropterous (present/absent), character 02: micropterous (present/absent) and character 03: macropterous (present/absent).
3 - Finally, you can put as character the polymorphic structure and the states as the variants of that structure and mark how many variants are needed. For example: character "wing development" and states: (1) apterous, (2) micropterous and (3) macropterous. Finally, if a terminal has the three polymorphic forms, you will code in this character as being (1, 2, 3).
I am not particularly able to say which is the most effective or which is correct, however, all possibilities are. Attached, I send you a paper that can help you.
All the best,
Wesley Dondoni Colombo
Ciências Biológicas (Biologia Animal)
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Einstein)