I used this as a guide, but as I run Linux and not Windows, I had to use Heimdall instead of Odin.
[UPDATE] I retried this using the directed version, only rebooting without wipe, etc. I had to use Heimdall, not Odin, but aside from --no-reboot and --resume, it works fine. I downloaded and used the version of TWRP that was recommended in OP, flashed that via Heimdall, no problem. Rebooted to recovery, no problem. Flashed SuperSU as linked in OP, no problem. Rebooted normal. No SuperSU app in the drawer, no su found in adb shell. No dice.
[/UPDATE]
I now have a ROMmed. BUT NOT ROOTED (that I can tell), Galaxy S5.
It may be because of the ROM I chose: Resurrection Remix Oreo.
I only just now noticed I used the latest TWRP (3.2.1-0), not the version listed in the text (3.0.2-2). I don't think it should matter, but maybe it does.
I rebooted the phone to Download mode.
I ran "heimdall flash --RECOVERY twrp-3.2.1-0-klte.img --no-reboot" (because I read somewhere that recovery had to be flashed twice on many phones before it stayed). I then had to power cycle the phone (for some reason Heimdall doesn't handle the "--resume" flag after using "--no-reboot" very well) and I did it again.
I then booted recovery, saw TWRP installed, and navigated to the SU update. Flashed it.
I then flashed the ROM I chose. Or maybe I flashed the ROM first and then SU? I forget.
Wipe dalvik, reboot...
Wait thirty-plus minutes, still cycling bootanimation.
Pull battery, reflash both, cycles bootanimation.
Pull battery, reflash ROM, boots in a couple minutes. Okay, so SU no go?
Could be the ROM, could be I used the wrong recovery, could be the fact I'm on the GQC2 bootloader. But I don't have root. I checked developer options and selected root access for ADB only (made no difference) and ensured android debugging is enabled (shouldn't make a difference on device itself, just on ADB over USB), I also enabled the local terminal, and any time I try "su" on terminal or in ADB, it says "su: not found".
Clearly I did something wrong, or the bootloader stops it. HTH.