Yes, it would involve extra joins in the tables when mapped this way, but to tell the truth, your database server can optimize joins on numeric foreign keys extremely efficiently. The alternative is to use a discriminator column to distinguish between the two types of addresses, as you had suggested with the entity type column. You can see the docs on discriminators here:
http://www.hibernate.org/hib_docs/v3/re ... criminator . I would suggest using a numeric column for the discriminator, as the indices over that column will be more efficient, but you have to balance speed with ease of use/clarity.
More info:
Inheritance mapping
Table per subclass inheritance