how about sending the PM when the system updates the birthday-templates once per day (first hit after midnight) ?
search for "if ($showbirthdays) {" in your index.php and for "function getbirthdays() {" in admin/functions.php
I'd change the while-loop inside getbirthdays() to send the PM or create a new function wich is called from within that loop.
Maybe You can create new templates for the message and the title and give fromuserid its own variable to let the admin decide which userid is the sender of this message.
I'd make this changes on my own, but i don't have the time and melondog needs to learn
sneak