Synonyms are a good way to do this. You have to create synonyms at the object level, though (as you discovered). An easy way to do this would be to write a script that goes through the list of tables in DatabaseB (from your example) and creates a synonym for everyone in DatabaseA. Keep the synonym name so that the code in your views does not change. For example, you have tbl_a, tbl_b and tbl_c in DatabaseB, you want your script to do the following as a result:
create synonym [otherDb].[tbl_a] for [DatabaseB].[schemaB].[tbl_a]
create synonym [otherDb].[tbl_b] for [DatabaseB].[schemaB].[tbl_b]
create synonym [otherDb].[tbl_c] for [DatabaseB].[schemaB].[tbl_c]
[otherDb]. [tbl_a], [otherDb]. [tbl_b] [otherDb]. [tbl_c]. , .