No, that's not possible. AppDomains are purely managed concept. Unmanaged DLL state is process-wide and there can be only one copy of the DLL loaded. A possible hack is to create copies of the DLL file with different names. It however scales very poorly and the pinvoke is nasty, having to write delegates and use LoadLibrary + GetProcAddress to bind them.
The cleaner alternative is to use separate helper processes that loads the DLL. Talk to them with an interop mechanism like WCF.