Nevermind that, everything just blew up again. Long story short: trying to do something neat like use bluetooth headphones hands-free turned out to be incredibly difficult and full of bugs.... and failed.
I was right the first time--bluez is broken, but not the way I thought; unfortunately pulseaudio's bluetooth support is also broken.
Furthermore Ubuntu's documentation on the matter is either very out of date or wildly inaccurate.
Bluez becomes unsustainable once pulseaudio takes over assigning profiles. It will eventually crash, irrecoverably. I think the problem here is that bluez, not pulseaudio, should be making the device profiles available. Pulseaudio should only be responsible for streaming the audio, not creating or annihilating audio devices. Bluez can't seem to handle giving control of the hardware to pulseaudio.
Pulseaudio's module-bluetooth-discover should be loaded with the default configuration, according to it's creator's blog, but it is not. In fact, even specifying that it should be loaded manually will usually fail and the module will often not load. It can be loaded temporarily via pacmd or pactl, but it will unload itself at some point either way. I can't find any other documentation on the module beyond the original author's blog posts.
This module also has several other problems, among them crashing bluez, and more specifically: This bug, which is probably what I am dealing with, was dismissed for further testing that never happened. Then this patch, the only proposed solution with a patch available, was dismissed in favor of a better solution that was never implemented.
I've gathered a lot of scattered tips into a brief rundown of how to get a bluetooth headset almost working handsfree.
Start by changing the configuration of bluetooth audio (/etc/bluetooth/audio.conf, unchanged sections omitted):
Changing the configuration of pulseaudio (/etc/pulse/system.pa, additions only):
# This section contains options which are not specific to any
# particular interface
Enable=Socket #What does this actually do? Advised in Archlinux tutorial, undocumented.
# Automatically connect both A2DP and HFP/HSP profiles for incoming
# connections. Some headsets that support both profiles will only connect the
# other one automatically so the default setting of true is usually a good
AutoConnect=true #This is commented out by default, again undocumented.
Don't forget to remove redundant surround sound configuration if you have one (/etc/pulse/daemon.conf, check this setting)
### Automatically detect bluetooth devices
load-module module-bluetooth-discover #Maybe this does more harm than good
### Automatically redirect to newly available sinks
load-module module-switch-on-connect #Probably necessary... probably....
Install blueman and remove gnome-bluetooth
; default-sample-channels = 2 #Commented out like so is best; must not be greater than 2
; default-channel-map = front-left,front-right # Again, commented out like so is best
sudo apt-get remove gnome-bluetooth && sudo apt-get install blueman