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; & ...
Welcome to this stack community. There are multiple ways you could get what you want.
I would use the Search Builder functionality. You can find it in the main menu Search-> Search Builder.
You can search the contacts where the address fields (such as city, street adress, or other address fields) are not empty.
You can then select actions (what to do ...