First you need to know that NHibernate cannot join tables into a single mapped class. If it can, would someone please post an example.
Second, in NHibernate you need to look at xref tables with more than 2 fields as being both xref and a class in itself. The 2 xref classes can have bags but will not have any of the data in the xref table.
The way I handle cross-reference tables to do more than many-to-many is to make it a class of it's own. I have not found any other way to do this. This is because the table is no longer just a many-to-many relationship, but now holds data about the relationship, just like any other table. It ends up being less elegant looking but it works.
So for your senario I would do the following.
map the MediaAddress table
Code:
class
prop mediaId
prop addrId
prop default
many-to-one medias lazy
many-to-one addrs lazy
Now instead of working from the Media class; work from the MediaAddress class.
Code:
//HQL
FROM MediaAddress AS ma WHERE ma.mediaId = :mId
Like I said it isn't elegant, but it works.