As far as Snarl goes, I have been fighting groups of mobs at a time. However, I do make an effort to have targeted each individual mob and command my pet to attack them. I understand that snarl doesn't work on a linked mob, so I do try and make sure I've commanded my pet to attack and that he's landed at least one hit. This isn't always easy in a group of 4~6 mobs, so I'm sure it could be a hate list issue, but it seems to happen often.
Snarl won't work if you don't have any actual hate with the mob. If a mob aggros you, you haven't actually done anything to be on its hate list. Same thing with linked mobs.
So before you use snarl, make sure you do something to actually get hate on the linked mobs. Since Fight is on a 10 second recast, you may not survive long enough to get your pet on 3 to 5 linked mobs. Instead, you can auto-attack a couple of them while using Fight on a 3rd. If you're subbing DNC, you can target additional mobs with a Step and a Flourish. You should be able to get on the hate list of quite a few mobs without having to wait on Fight's timer to come up again. And once you're on all those hate lists, you can Snarl.
Something else to consider about Fight: since your pet is ruled by its hate list, it may wind up changing targets between the time you use Fight and the time that it can attack the new target. For instance, lets say your pet is fighting mob A. You then use the Fight command to have it pull off mob B from you. But you use the Fight command right after the pet has already done its auto attack. While it begins to move toward mob B, mob A attacks and hits your pet. This causes your pet to focus back on mob A again, even though you just told it to Fight mob B. In a situation like this, you may think you can safely Snarl mob B onto your pet, and you'll be confused at why mob B is still beating on you.