You can't load a dll into memory twice, but you can use the dll from several different programs. the use of a dll is the fact, that you can have code which is needed by more than one program in your memory, and all use them, thus providing better locality for caching e.g. besides the fact that you need less memory.
so it should be possible to load the dll a second time, but then it'd have another data segment, because it's in another process. therefore it won't be easy to access the data from the HL2 process. In a perfect OS, there isnt any way to do this but interprocesscommunication which has of course to be supported by both sides. Of course this security issue isnt seen as important at all on win9x machines, but on newer OS including linux its hard work, and definately hacking, not coding any more