Dynamicly generated block_info?
RE 1: If the block no longer appears in the hook_block_info(), then yes, the block's config will eventually be removed. I'm a little unsure of the timing (clearing cache / cron operation). You can use _block_rehash() to force an update of the available blocks.

RE 2: Not a nightmare, no. Keep an eye on your entities to ensure the list doesn't get out of control, but that's all you need to worry about. hook_block_info() doesn't get called on every page load, but rather only when:


the cache is cleared
the blocks administration page is loaded
another module calls _block_rehash().