Hi Max,
That didn't take you long!
I assume here that you're using the IDE approach to building your software project. If you're not then it'll be of limited help.
As far as addresses are concerned, the important one is the base address which is defined in system.h. If you're using the IDE like me, you should find it under your system library tree in e.g Release\system_description. It'll be called something like HASH_BLOCK_BASE. Everything within your logic can then be accessed at an offset from that base address using the IORD/IOWR macros. I usually use the native addressing/register slave approach.
I'm sorry but I don't know much about packaging up your component into something you can re-use. It's not something I've had a need to do so far.
Maybe there's someone else left in this ghost town that can assist further! If not, it might be worth a visit to the Altera Forum too.
Cheers
Sharkybaba