The core reason why it’s difficult to do infinite filters like this is because BP xprofile fields are abstracted. That is to say, in order for our profile fields to be extensible (so that your site can have different profile fields from mine) we have moved the profile data to a separate table, which is essentially a key-value table. This is in contrast to a solution where you store all profile data in a single table, making it very easy and fast to filter by many criteria at once (the trade-off being that the table structure needs to be set in stone).
The numbers you cite shouldn’t be much of a problem. You may experience some slowness if you try filtering along 7, 8, 9 criteria at the same time, though I suspect that this is probably an edge case. In any case, some solid MySQL query caching will help.