The only flaw in the "do volunteer work" plan is that places such as soup kitchens can become overwhelmed with volunteers on holidays and either have to create busy work for them or turn them away.
That is true. I wasn't thinking of volunteering for holiday-related stuff, for which you are right, they have plenty of volunteers on holidays. A much better choice is doing ordinary work like answering the phone, delivering meals, or emptying trash at a hospital, animal shelter, nursing home, fire house, or other social service or public agency that must stay open on holidays, so that more of their employees can have the holiday off. Jewish organizations often do this at Christmas. It's fun.
But it doesn't even have to be volunteer work. It works just as well to think of someone who might be alone or unable to make a nice holiday that you could visit or host or take out for a treat or even just bring flowers or something you bake, or a child who adores you who would be thrilled to be invited to fly a kite or play a game with you. Or you can bake cookies to give to all your favorite storekeepers, librarians, and so forth. Or send flowers anonymously to nice people who deserve it. Or write nice letters to people who aren't expecting them. Delighting someone always cheers you up, don't you think?