How do I make my phone play a ringtone over my headphones despite being on "silent"?
You could create a tasker profile that sets the ringer volume when a Bluetooth headset is connected.

I'm not sure how to handle the case when you disconnect the headset,  though.  You would only want to set the volume back to zero if it was zero when it was connected.

Edit: tasker gives access to current ringer volume via variable %volr

In a profile with condition Bluetooth connected:

Set a variable %savevol to %volr

Set ringer volume to desired level, if %volr = 0

Exit task: set ringer volume to 0, if % savevol = 0