A quick note about rare blocks.
I've scanned over the CAPX and you're are using random to select which blocks are spawned which is the way to go. I personally cheat to use "weighted" random's by using the choose() expression.
You could use something like choose(1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,10) Construct will then randomly choose a value from the comma separated list.
All normal blocks would have the same chance of being picked while the special block (10 in the list) would have a rarer chance of being picked. You'd have to tweak the values to get the correct rarity but I think it's a pretty easy way to get this sort effect.