"user B will read data from A and user B_1 will get data from A1? "
I'd suggest a database wide LOGON trigger on the database.
Rather than coding in userids into the trigger, one set of users will have a role for accessing A, and the other set a different role for accessing A1. The LOGON trigger would see which role the user had (query user_role_privs) and do the appropriate
ALTER SESSION SET CURRENT_SCHEMA=....

Again, no public or private synonyms.