Although I have some details to work out, I'm proceeding with using a sub iteration to designate the team's backlog but using area path to specify the product. ex:
Iterations
MyTeamProject\Team1
MyTeamProject\Team1\Iteration 1
MyTeamProject\Team1\Iteration 2
MyTeamProject\Team2
MyTeamProject\Team2\Iteration 1
MyTeamProject\Team2\Iteration 2
Areas
MyTeamProject\Product1
MyTeamProject\Product1\optional sub-area for product1
MyTeamProject\Product1\optional sub-area for product1
MyTeamProject\Product2
MyTeamProject\Product2\optional sub-area for product2
MyTeamProject\Product2\optional sub-area for product2
If you configure Team 1's areas to include ALL areas (under default area) but only iterations under Team 1, they will only see work items set to their iterations regardless of product (area path). There is a refinement step where new work items must be moved from the MyTeamProject\ iteration to the MyTeamProject\Team x iteration so it can be seen.
The result is Team x (scales to any number) sees their product backlog at MyTeamProject\Team x iteration and their current iteration backlog at MyTeamProject\Team x\Iteration x which can each be a mix of product areas via area path.
You'll end up with two teams in addition to the default team that is created with the team project. If you view backlogs at that level, you'll see everything regardless of iteration path or area path.
Advanced config is to create product teams for the product areas so product owners can view a version of the backlog regardless of iteration but only in their designated area path (for their product). Hope that helps.