Rather than post my entire code for a related query for my org, I'll just post the snippet of showing how I joined hz_contact_points to hz_cust_accounts:
hz_cust_accounts hca,
hz_parties hp,
hz_cust_account_roles hcar,
hz_contact_points hcp
WHERE
hca.party_id = hp.party_id (+)
AND hca.cust_account_id = hcar.cust_account_id (+)
AND hcar.contact_person_id = hcp.owner_table_id (+)
I see the above is joining to sites or relationship tables which is likely the problem since they likely aren't the same kind of IDs. I joined the contact_points table to cust_account_roles table that is then joined to the cust_accounts table and I think my results look correct to me.