As a newbie I should probably stay out of this discussion...but maybe I'll learn something.

Seems to me if app is fully qualifying table names (ie: table_owner.table_name) then it's not using synonyms. I suppose it could be fully qualifying synonyms (ie: synonym_owner.synonym_name) but that makes little sense.

If each user of app has own Oracle logon, and if app is NOT qualifying table names, then some users can have synonym pointing to the actual table and other users a synonym pointing to a view or views you have setup which eliminates certain columns. Have I overlooked something?