I needed to send birthday messages to contacts, but Civi's Birthdate field, as you say OP, looks only at the current year, despite the fancy relational date ranges (i.e. Today, Tomorrow, Last Year, etc.). Useless.
Rather than adding an extension, I used custom fields to create a work around in Civi.
I added two custom fields: Birthday Day Number; & Birthday Month Number. I have these set as number fields, but really any qualitative field that can express values in the ranges 1-31 and 1-12 works (e.g. you could use a number field and a text field using the names of months, but this has a higher chance to introduce user error in inputting data when compared to numbers imo: e.g. one user writes Feb, another writes Fev, another writes February, etc.).
If you then export the birthdate fields and process so that you get the day and month as isolated columns in a csv, you can import and add those fields to your contacts.
I can now used Advanced Search to find contacts that have e.g. Birthday Day Number 5 & Birthday Month Number 2 (the fifth of February-- any year!). This would work equally well for your purposes, as you'll be able to search by entire months by searching on only the month field. You could also set the fields up to be searchable by range, but I found that this slowed down searching criteria input for me.