OP, you are getting great advice.
As the only grandchildren are yours, it sounds as if itvcould be you hosting indefinitely.
I would think about this, because when people are as selfish, lazy and entitled as some of your guests appear to be, a lot of women crack at some point and either really blow up during the actual visit, go on holidays or just refuse to host.
There are precious few Christmases that your children are fully engaged with it and beside themselves with excitement and each one is to be cherished.
Spending these days tolerating selfish people, even close family, gets old very quickly when you would rather be enjoying your children.
In your place I would think about this and the possibility of a decade + of this and how you will feel (of course no one ever knows I realise).?
I would then perhaps firm up your tone.
I say this as someone who has listened to the regrets of others that exhausted themselves for some pretty thankless family when their children were young.
Take the good advice on here.
If take out food is an option then have people cough up for it.
Do not allow anyone dictate how long they are staying.
Some will say 2-3 days is long enough when bad weather can keep people inside.
Remember this is your life.
You are perfectly entitled to put yourself first in all of this.
No one is entitled to impose on you so much that Christmas becomes an annual ordeal.
You have agency.
My friends uncle was a very rude grump one year and the following year she just refused to have him.
Her bossy mother decided to have a strop and my friend booked the sun for 10 days.
Her mother couldn't believe it.
They had a great holiday.
She gave her mother space for a good while and a new understanding was borne.
Her Uncle was a lamb the following year, not least because her mother ended up completely blaming him for everything and he had to listen to it for months.
No one owes anyone a lovely family Christmas day IMO.
Anyone who offers up such a day/holiday should be exalted from the roof tops😁.