From Eloy's comment,
Z) Proceeding with custom removal code like this is really error prone. What if the block has files, or tags, or logs, or anything else. We should be able to use plugin_manager / uninstall_plugin() in upgrade code. Sort of verify that everything works and whitelist it for allowing its use. It's a pity that we have a good API to remove plugins and cannot use it un upgrade.php. So +1 to consider that option at some point (another issue).