I found the solution reading a FAQ about the new classloader model in JBoss 3.3.0. It turned out that I DID in fact have two different versions of my own library deployed -- once in a test.ear file and then again in my more current ear project.
The classloader apparently shares all modules in one namespace across all applications. When I re-deployed one application, I believe the application order was changed so I ended up getting classes from my old library.
Needless to say, I've removed the application containing the old library from my /deploy folder.
But, the faq says there is a way to set the scoping of an application to isolate it's libraries (or vice versa from the other applications). How do I go about doing that?