Well, global blocks may be just as useful sometimes :) But then, why do we have autoconfirmation and semi-protection? Wasn't it also a waste of our time semi-blocking and then blocking? ;)
And you have also to remember some problems like user-complaining (not really resolved when they can answer on its discussion page).
A more fine grained system can be better, as you have more abilities. If you don't want to remove permissions one at a time, make a complete block. Soft-blocks and upload-only blocks, *are a requesting*, so more graining doesn't seem so useless.
About a expenditure of dev time, it doesn't seem difficult to me. Simply change the IsBlocked() for IsBlockedEdit(), IsBlockedUpload()... They only need to have a and-mask on the blocked flag (more complicated would be the blocking amounting). This is the moment to do it, when several changes to blocks are being added and there is a schema update.
Tim 'would be happy to hear about our ideas'. I simply speak what had been thought about. If it's not a good idea, well... it can be dropped. I will still be able to sleep at nights :-)
Platonides