SELinux can and does do exactly this, depending on the configuration. What you'll most often see is that applications covered will have rules that allow it to access a subset of the user's home content (xdg cache, data, etc.) that allow that application to function, and SELinux will use UBAC rules to ensure that user A's instance of that application cannot access the data of user B's.
Profiles are indeed tricky though, and generally something I would consider more easily implemented as just logging in as a different user.
I can't speak much about AppArmor since I'm not too familiar with it.