Rats! It figures that I'd read this right after hitting the send button:
(From MSDN)
If a DLL declares any nonlocal data or object as __declspec( thread ), it
can cause a protection fault if dynamically loaded. After the DLL is loaded
with LoadLibrary, it causes system failure whenever the code references the
nonlocal __declspec( thread ) data. Because the global variable space for a
thread is allocated at run time, the size of this space is based on a
calculation of the requirements of the application plus the requirements of
all of the DLLs that are statically linked. When you use LoadLibrary, there
is no way to extend this space to allow for the thread local variables
declared with __declspec( thread ). Use the TLS APIs, such as TlsAlloc, in
your DLL to allocate TLS if the DLL might be loaded with LoadLibrary.