dtgreene: Of course, being able to ssh into a "better" machine (which I'll assume means a computer that you have root on or that can run VMs with hardware acceleration), this would require one of two things to work:
You're making a lot of assumptions about being able to run whatever software you want on the lesser machine, as well. In particular, "work/shcool" computers tend to either be freely accessible enough that you can just run like you're root, or the exact opposite: so locked down that you can barely even browse the web or preform other "common" tasks. Lesser computers also have a tendency to have less storage space.
dtgreene: The bluetooth system on GNU/Linux is not user-friendly.
That's an understatement. Mostly undocumented crap that refers to the standards as if everyone has them memorized that has recently (4.x->5.x) been to converted to undocumented almost unusable crap over dbus (as you already mentioned) and tightly integrated with systemd (which I don't use). I guess common tasks are GUI-fied, so nobody cares that it's not documented.
I never use the GUI unless I'm stumped and hoping the GUI will do some magic I don't know about yet. I use bluetoothctl for pairing, force connect, force disconnect, and misc other stuff. It has a help command. You might need "power on" to first power up your controller You'll also need to have it running with its agent on (agent on; default-agent) to confirm/send passcodes.
My tablet runs Linux, so I can make it act however I want. In particular, I use bt-network (from bluez-tools) to run a nap network. On the tablet (server), it's set up using /etc/network/interfaces.d/bt (it's Devuan, so it's Debian-like; requires bridge-utils):
>iface br0 inet static
> address ....
> netmask ....
> bridge_ports none
> post-up bt-network -d -s nap br0
> pre-down killall bt-network
On the laptop (client), I connect using bt-network -d -c <bt-addr> nap & and then wait for bnep0 to come up and configure it with an address (all scripted, of course). There are other options, but all of them are unreliable on my systems. bluez-tools isn't very stable.
Your phone is probably more limited. I assume obex is what you want, which I have no experience with. I just use USB with simple-mtpfs. A quick try with my laptop and phone shows that bt-obex (also from bluez-tools) crashes on ls. On the other hand, obexftp (both as a client and as a fuse fileystem, packaged separately as obexfs on Debian) seems OK, but I'm having a hard time keeping connected long enough for serious testing. It's probably something I'd need to do on the phone side to keep it from disconnecting right away. You might also have better luck running an obex server and using a client on the phone.
Anyway, it's pretty obvious that I have no idea what I'm doing most of the time. My DualShock 4 suddenly stopped connecting immediately one day, requiring a partial re-pair every time, and now it's working again. I have no idea how to even anallyze what went wrong (other than knowing that it was some sort of service negotiation failure): bluez just doesn't seem to log anything anywhere (possibly because I'm not using systemd).
(It's also annoying that bluez requires dbus; for some of the simple systems I like to play with (like buildroot etc.), I would prefer not to have the added complexity of dbus in the system.)
You could see if you can get bluez-4 working. On the other hand, a basic dbus setup on its own isn't that heavy, and might cure some headaches in the future.