Blocks aren't being assigned to a region
(Luis already answered eir own question, in the comments above, but I thought I'd add something here; all kudos to Luis though.)

The status property returned by a module's implementation of hook_block_info() must be TRUE. This is slightly unintuitive because when enabling blocks in the UI, one only has to choose the region—however, in doing so a block's status is also changed. Programmatically, we must set both status and region properties. (I'm not sure there would ever be any reason to set one and not the other.)

When doing this to an already-enabled module, it would seem that clearing the block cache (drush cc block) is not enough, nor is dis- and re-enabling the module; it must be uninstalled and reinstalled for the change to take effect (drush dre custom_module if you've got Devel).

Note also that Drush seems to get confused when doing this with a region that doesn't exist in the default theme (reporting that "The block Carrousel was assigned to the invalid region hp_content and has been disabled."). This is not true; the block is enabled.