Exactly. With the bits available, there's only 1024 or 2048 (i'm not sure which) block IDs available. No more than that. The blocks are already in a database. There is no way to give more Block IDs without expanding the block data beyond 3 bytes. Personally, I think the game could go to 4 bytes per block. Most players have systems that can handle such an increase in the raw data load. Unfortunately, Planets would once again become lag monsters, because the data for any entity is automatically increased by 33%.
It would be neat if we could somehow create a hull-to-hull master-slave relationship, where if you slaved a armor/crystal/hull block to another, they could share common features and create a CGI "intersection" block, so that the new shape would be the combination of the two combined shapes. Example: Two corners could easily create a pyramid. In the same way, two wedges could create a diamond. It would really open up the possibilities for shapes, and you might even be able to reclaim some block IDs, by creating existing shapes from simpler shape combinations. (E.g. Corner block from two wedges.)
Maybe make it so that the master becomes the CGI shape and all slaved blocks are the CGI components. You could even get more complex with shape relationships by introducing logic sub-slaving. Example: Additive CGI if the slave block has a "AND" logic block slaved to it. Subtractive CGI if the slave block has a "NOT" logic block slaved to it. Intersective CGI if the slave block has a "OR" logic block slaved to it. Etc. Force texture alignment on the builder by making textures applied to the final block, based on the order of the slave/master relationships.
Then you could create almost any polygonal shape with hierarchical CGI operations. (Layered series of master-slave block sets)