I tested the following scenario:
Created Db1 and DB2. Owner of Db1 and DB2 is sa, meaning all objects will be owned by dbo. I created application role Db1..AppRole1. I also created Db2..Tble and add 1 row of data into it. I granted login UserA connection ONLY to Db1 and DB2. Granted guest connection to DB2 and enabled cross database ownership chaining to Db2. Using Query Analyzer, I set the Db1..AppRole1 and performed "SELECT * FROM Db2..Tbl", which failed with lack of permissions. So, I granted guest SELECT on Db2..Tbl and executed the "SELECT * FROM Db2..Tbl" again, which was successful. Then I disabled cross database ownership chaining to Db2 (guest SELECT permissions to Db2..Tbl remain in tact) and executed the "SELECT * FROM Db2..Tbl", which was successful.
From the scenario above, I conclude that if I have to grant guest SELECT on an object, I do not need cross database ownership chaining enabled. What I was hoping to accomplish was to use cross database ownership chaining without granting object permissions to guest or any other users. Is this possible?