Unfortunately there will be people who make these kinds of insensitive comments. They may take some kind of issue with our choices, or feel judged by us. The reason doesn't matter, their behavior is inappropriate. I understand what you are going through.
My first choice is to get these people out of my life. I have, "disowned," cousins for such comments for over 25 years and my life is much better for it. It goes beyond the comments for me. I'm only interested in having kind people in my life. I understand you are perhaps not at the place in your life where you can do that.
The other thing you could do is the broken record method. Calmly say the same thing every time they say something inappropriate. This makes their, "game," less exciting. They say, "you should eat ducks!" You say, "I don't eat pets." They say, "You would like how they taste!" You say, "I don't eat pets."
Or you could just ignore them completely when they behave inappropriately. Along with not posting photos of your ducks, or talking about your ducks when they are around. We would be happy to see photos of your ducks!!
Can you get help from a respected older family member and have that person talk to the insensitive person about their behavior? I think you may need back up if you are going to choose confrontation. Then rules could be set in place and agreed upon in your household that if guests talk about eating your pets they will be asked to leave.