Without seeing your campaign its a little difficult; but from what you are describing having separate ad-groups should have done it. You shouldn't get Ads from one ad-group being shown for keywords from another ad-group UNLESS there is overlap in the keywords.
In other words if you have [food bank] in both ad groups then Google will decide which to display at any given time and this may not be the one that you want (could be 'random' or could be forced by your bidding options/budget distribution or ...)
If your concern is that the human food bank is harming your pet ad-group then I would look to be more specific in your terms for that ad-group.
i.e. +pet +food +bank or [pet food bank] :: +dog +food +bank or [dog food bank] :: etc
Freelance SEO and Web Developer
Latest Clients Home Discount and Printed Products