One thing I forgot to mention, 1 & 2 are interrelated from what I can tell including a problem I didn't mention.

Supposedly systemd-boot will attempt to find the root, /home, /var, etc automatically and ignore /etc/fstab, but it's not working for me, the boot hangs at gpt-auto-root.

From my research it SHOULD work, my ESP and root are on the same drive. It's supposed to find it using the partition type GUID. My work around was to change /boot/loader/entries/*.conf from

options $kernelopts (which systemd boot doesn't substitute from grubenv) 
to
options <actual kernel options from grubenv>

The reason this get's more complicated is according to this Arch wiki[1] if Secure Boot is enabled, the options in the loader file are ignores and only the .cmdline embedded in the kernel is used. AFAICT, Fedora doesn't embed the command line. So even if I can get systemd-boot to work with Secure Boot enabled, the options I'm specifying will be ignored and I'll be back to getting stuck at gpt-auto-root.

I could attempt to create a unified kernel image[2], but automating that is probably beyond my skills, or certainly the time I have to teach myself how to do it.

Thanks,
Richard

[1] https://wiki.archlinux.org/index.php/systemd-boot#Adding_loaders
[2] https://wiki.archlinux.org/index.php/systemd-boot#Preparing_a_unified_kernel_image