Problem
Calling PermissionManager::isBlockedFrom() implies that the user 1) has a block and 2) the block applies to the Title given. However, this is not necessarily the case.
UserIsBlockedFrom allows an extension to modify the result of PermissionManager::isBlockedFrom(). Unfortunately, this method hook is called regardless if the user has a block or not.
Likewise, UserIsHidden allows an extension to modify the "hidden" status of a user without actually having a block attached to the user.
Proposed Solution
Since PermissionManager::isBlockedFrom() is mainly called from PermissionManager::checkUserBlock() and that method does not call the aforementioned method unless the user has a block, it is safe (in the majority of instances) to only call this hook if the user has a block, thereby guaranteeing that a true result also guarantees that the user has a block.
The UserIsHidden hook doesn't actually make sense anymore. Extensions have the ability to add blocks to users using GetBlockedStatus. Therefore, the former hook should be deprecated in favor of the later. During the deprecation period, a SystemBlock should be generated when the result of the hook is true.