I think I have the headless bluetooth network figured out. I'm using Debian Stretch, which is "testing" at the moment.
These are very incomplete instructions.
You need everything bluetooth and bluez-related including bluez-firmware. Ideally your bluetooth radio is supported. Be sure bluetoothd is not running after installation. systemctl stop bluetooth (??) Be sure it's actually dead "ps aux | grep bluetooth."
Modify /etc/bluetooth/main.conf and change the class to Class = 0x020100 The byte-values are very meaningful and old documentation seems to be valid.
Open up a terminal and start bluetothd without backgrounding "bluettothd -n --debug"
Set up an ethernet bridge with your NIC as one of the devices in the bridge. Give the bridge a LAN address of your choosing.
Open up another terminal. launch bluetoothctl. "Power on", "pairable on" "agent on" and leave bluetoothctl running.
This next part might not do anything.
launch /usr/bin/bt-network -d -s panu pan0 in another terminal and leave that window open.
Open up another terminal and visit this URL and download this very important script.
https://github.com/mk-fg/fgtk/blob/master/bt-pan. The command for bt-pan.py python bt-pan.py --debug -u nap server $your-ethernet-bridge
Pair your device watching bluetoothctl. Internet access should "just work" after pairing. For me, there was no bt network device like a /dev/pan0 created. Somehow the python script adds the bluetooth device to the network bridge without any evidence of the bluetooth device being added to the bridge.