First of all you are fetching SalesSubjectContact Collection, then your PrefetchPath should start with it, not with SalesSubject, as follows:
EntityCollection IContactManager.GetContactsForSalesSubject(SalesSubjectEntity salesSubject)
{
PrefetchPath2 path = new PrefetchPath2((int)EntityType.SalesSubjectContactEntity);
path.Add(SalesSubjectContactEntity.PrefetchPathContact ).SubPath.Add(ContactEntity.PrefetchPathContactAddress).SubPath.Add( ContactAddressEntity.PrefetchPathAddress);
//helper method
base.FetchEntityCollection(salesSubject.SalesSubjectContact, null, salesSubject.GetRelationInfoSalesSubjectContact(), path);
return salesSubject.SalesSubjectContact;
}
If this still returns the same results, then try to examine the generated SQL Queries and run them in your Database Query execution program, like Query Analayzer, to examine the results returned.