upon further consideration for each block to have a different set of rules and still be compatible with other mods I would have to modify the class of every vanilla block and with no native multithreading support that I know in the minecraft code this would take a considerable amount of work, would not be easy to maintain, and most likely would be riddled with bugs and performance impacts. And as you pointed out you can do this with just a few block which would drastically cut down on the size of the project but would defeat the purpose I was intending. I wanted digging caves larger than 2x2 to require supports so collapses didn't happen, and building large houses with big roofs to again require support structures or certain designs to stop from falling in, and have floating islands be impossible.
As for checks it would be check the 4 paths(N,S,W,E) and as long as one of the paths passed (check out one AND down one, for cobblestone) block would not fall. Each block would have an associated check tree that would return true as long as you reach the end of one of the branches, and if it fell would trigger the checks for all blocks with 1 radius around it which would mean a large island built on one pillar would crash any system if the pillar was destroyed. Also I would not code it to check very far. If you built a tall pillar of cobblestone and put one on the side it would go through the same check as earlier mentioned and would not need to check down the entire pillar.
The clean way would be to add boolean isSupport, and method isSupported(), to every block you didn't want to float. I would not want to undertake a project like this without help.