Have you tried loading FileSystem_stdio.dll and using functions from it?
The CreateInterface func inside it returns a pointer to a instance of the IFileSystem class, when I tried mine, I was using source 2007, instad of 2006, and am too lazy to correct my error right now. I'm pretty sure it loads the hfs files by defining them as a search path
Edit: oh, do you have a unpacked filesystem_stdio that I could use, the unpacking tutorial I got unpacked the code, but didn't give me a usable dll.
Edit: about that 4-byte checksum, ida FindCrypt v2 only showed SHA-1 consts in filesystem, but there are CRC32 consts in engine.dll
Edit: Whoa, you joined just to post that?