You should be able to access the username in the form by adding a field username
But are you defining the username value in the App User QR that you provide to the monitors? If not this will be blank in Collect. This is different to the display name for the app user but you might want them to be the same value.
You'd also need to build your list of usernames to match the usernames assigned to the app users.
I don't think you need to add allow_choice_duplicates to settings, you ought to be able to put a space separated list of zones against the username (one entry per user), and the list of farms with matching zones will filter accordingly (one entry per farm)
username1 might have the zone column as zone1 zone3 zone99, username2 might have zone1 zone99 zone 4 and username2 has zone2 zone3. So a farm farmA with a value of zone1 against the zone column should appear for username1, username2 but not username3 when you use the selected function as a choice filter.