Bail out immediately if IAT entry is already hooked

* This avoids going into VirtualProtect changing the page access while code
  may potentially be executing these areas of memory (since the module is
  hooked, and may have returned to user code)
Make the lock only cover the ApplyHook function
Skip a few core modules
Remove a loop that doesn't need to be there any more