Ya it would be kinda useful (I.E. changing a build from iron to metal.) but the states possible would have to be already in the game. Liquid coal is impossible.
The idea itself would be simple to implement from scratch. Simply have each elements state as a variable instead of hardcoded, and you wouldn't need a new element for each state. Unfortunately TPT isn't built that way.
@user25@DerpLord is right. You can change them into a variable. View my topic about Object-oriented TPT/Collision testing. This speaks more about dynamic elements.