With the introduction of GetUserBlock hook in rMW7a5508573a3d: Ensure block hooks keep user state consistent with realistic blocks it is now possible to modify or add more blocks to a user. Considering that in User::getGlobalBlock() when a global block is found what gets returns is a SystemBlock, instead of having the extension listen for UserIsBlockedGlobally, it could listen for GetUserBlock and add the SystemBlock with the global-block type to the user.
User::getGlobalBlock() can be deprecated and replaced with User::getBlock().
By doing this we'll be moving forward decoupling core from the GlobalBlocking extension and downsizing the User class since getGlobalBlock and all the related properties can be deprecated and eventually be removed.
I searched for all the uses of getGlobalBlock and I couldn't find any special casing that would make this transition difficult.