CaptchaImpl wires "Captcha" instances 2 ways:
1.) The plugin sets the instance using the plugin's class loader. This is how Hooks override the default Captcha implementation. This works all the time.
2.) The portal sets the name of the Captcha class, but does initialize it on startup, to make startup speed faster.
The first time a user hits a page that requires a captcha, it will now try and initialize the Captcha (if we're using the portal one and not the hook). This will work MOST of the time because the class loader for the class initialization is the correct one - the portal's. Sometimes, the thread context class loader may be a plugin's, which will then cause it to break.
Since this block is never reached except by the portal, the fix is to have it use the portal class loader all the time.