Unfortunately, avoiding permission_p when possible will yield a high return in terms of performance if you've got a lot of objects, users, and permission rows.
There are places in the toolkit that already do this, and as we get more experience with the toolkit in larger and busier sites we'll undoubtably be introducing more such abstraction-breaking queries in the future.
Giving an admin free reign on permissions by allowing them to assign a perm to an object where the package writer didn't anticipate it is pretty meaningless, I think. If the need arises it will be due to a bug in the package or some sort of design error, and making such an assignment meaningful will require some code hacking anyway.
So I don't think there'd be any loss of meaningful functionality as a result of adding scoping such as I describe.