So, first thing that comes to mind here is Sharing Settings; to get those to work, though, you're also going to need to get rid of "view all" permissions for your users on the corresponding objects (this is located in the "object settings" section of their profiles). You may also need to check the organization-wide defaults (also in "Sharing Settings") and make sure default access for the objects in question is "Private".
Removing view-all permissions will mean your users can only see the records they "own"; after that, you can add in your sharing rules, which mostly work how you'd expect. They're somewhat limited in who they let you share with, though: Public Groups are pretty much your only out-of-the-box choice if you want your audiences to overlap without being complete subsets.
(Which might not be relevant for you; "Canadian user" and "American user" rolling up to "North American Manager" works perfectly fine using Roles, provided you use multiple sharing rules)