Seems to me you need a more general solution than just holidays. I'd think you'd want to be able to "mark" any date - like vacations or sick days.
Off the top of my head I'd say implement an array of dates. Each date in the array is a day that you don't send that alert. Just scan the array and if today's date is there, well there you are. This will prevent you from having to test for (e.g. hard code) specific dates.
Additionally, you can store the year value such that you can tell if a particular date is recurring, or is just a one time thing. For example if you leave the year blank for July 4 then that means this is a recurring (annual) date. If the year is in there explicitly then when that day,month,year is past the date can be purged from the array.
If you want to get fancy, you might want to "encode" a date range; rather than enter each day of someone's 20 day vacation, you enter the beginning and ending date. In this case you'd need a sort of a more sophisticated data structure to know what dates are beginning and end dates, and what beginning/ending dates are paired. Off hand, I don't know what that might look like. You'd need a unique marker (key) for each pair and then an additional marker to know what is the beginning or end (or smart code to figure out that the earlier date of a given matched pair is the beginning).
You can have lots of fun with this. It has job security written all over it!