I sometimes buy prepared meals (hot and cold) from a nearby grocery chain and bring it back to the hotel to eat. Cheaper than a restaurant. If my hotel room has a mini-kitchen with fridge and microwave, then I might buy some groceries for the week.
Per Diem is meant to be just that - an "allowance"... so if you don't spend any of it, you get to keep it... nothing unethical about that.
But if corp policy overrides this, I will ignore it... I have yet to encounter this with clients or corps I've worked for though.
So what if someone buys you lunch? You have to deduct that too? Screw it.