In case anyone ever runs into this I have a solution. The problem stemmed from using the gcc build Win32 dll as a starting point. I had then used LIB /DEF to generate a .lib that I linked against. As it turns out there is some kind of problem (either in the lib or in the dll) that causes it to not fixup correctly when the dll is relocated to another base address during load.
The solution was to create a project in VC 2003 .NET that built the DLL and the LIB. Making sure to specify the .def file to the linker when creating the DLL. I still used LIB /DEF to create the lib that I link to. This version of the dll runs fine under SP1 through the same codepath. I used the 3.2.2 sources. Yeah! Thanks to Tim and Bob for their help in getting this building. Tim finally supplied a VC Project that I was able to compare mine to and found my problem in building. Anyway, there you go. Thanks again. ~derek.