Hello,
Is calling wfRunHooks that expenseive? It returns almost immediately if no hooks are registered as "userCan"; and Title::userCanRead returns anyway after the hook if the user is allowed to read. I can't see why is the quick "shortcut" necessary, when many other hooks get called during every request.
well, if hook exists, $wgUser object is unstubbed - and thats already expensive. there is no need of having stub handlers, if we start unstubbing everything at the beginning of every code path.