Can we allow/disallow visibility of blocks for certain users or profiles?
Not directly. If all the fields in a block are not visible to a user the whole block will not appear, but it is at field level, not block level.
Which seems logical. I thought this wasn't working, but there was one mandatory field left I needed to free up before I could deactivate it for the profile in question.