I think I'm just going to use Fulcrum. It's working well, and these results are promising. I have been running iotop for about 14 hours now (first column is cumulative disk writes, second column is process name):
506.94 M bitcoin-qt -min -chain=main [b-qt-init]
466.48 M systemd-journald
362.11 M Fulcrum /home/user/Desktop/fulcrum/fulcrum-user-config.conf [rocksdb:low]
244.21 M Fulcrum /home/user/Desktop/fulcrum/fulcrum-user-config.conf [Controller]
223.21 M bitcoin-qt -min -chain=main [b-scheduler]
212.82 M Fulcrum /home/user/Desktop/fulcrum/fulcrum-user-config.conf [rocksdb:high]
167.34 M bitcoin-qt -min -chain=main [b-msghand]
166.64 M tor --defaults-torrc /usr/share/tor/tor-service-defaults-torrc -f /etc/tor/torrc --RunAsDaemon 0
157.10 M [jbd2/sda2-8]
94.43 M Fulcrum /home/user/Desktop/fulcrum/fulcrum-user-config.conf [rocksdb:low]
25.96 M rsyslogd -n -iNONE [rs:main Q:Reg]
10.98 M fwupd
4.83 M Fulcrum /home/user/Desktop/fulcrum/fulcrum-user-config.conf
4.27 M Fulcrum /home/user/Desktop/fulcrum/fulcrum-user-config.conf
972.00 K bitcoin-qt -min -chain=main [b-addcon]
216.00 K smartd -n
176.00 K snapd
124.00 K bitcoin-qt -min -chain=main [b-opencon]
Between all the Fulcrum variations in the list above, it looks like just under 1 GB was written in 14 hours. In the same timeframe, electrumx would have written around 70 gigabtyes to disk (seemed to average around 5 GB per hour). Crazy difference.
There are three possible causes I can think of for now:
1. I have electrumx misconfigured somehow. If other people were observing this, then this is probably not the true. However, nobody else running electrumx reported back to me, so I have no evidence that this is true.
2. Some of the code is poorly implemented somewhere or there is a bug in electrumx. I also have no evidence for this.
3. This is a difference between leveldb and rocksdb. I only tested electrumx with leveldb. Fulcrum uses rocksdb. Each of these simply may handle things differently. It's possible I wouldn't observe this if I used electrumx with rocksdb instead.
At this point, I'm not really willing to sink any more time into this to get to the root cause, since Fulcrum is working great. I'm just going to continue using it for now.
Thanks for your help, everyone.