After a long few months trying to figure this out... It looks like the PL011 UART driver is unable to set a baudrate when booted via u-boot. My understanding of the code is poor but it looks like it only works for x86 BIOS/EFI booted systems. This seems like something that might be useful for people running HAT's on raspberry pi's or other ARM boards. Currently the baudrate can be set using u-boot by adding init_baudrate="9600" to /boot/msdos/config.txt but it FreeBSD is unable to change it. It would be nice to have baudrate setting implemented eventually... but at least now there is a ticket for other people having this problem.
Just for posterity, IIUC it looks like the right line to add to config.txt is actually: init_uart_baud=9600 This is actually a feature of the Raspberry Pi booter, and it's (somewhat) documented here: <https://www.raspberrypi.org/documentation/configuration/config-txt/boot.md>. I agree it's unfortunate that the UART is not configurable from within the OS itself!
Interesting, worth a try if I ever upgrade that device to FreeBSD 13. It's... rather out of reach on the roof currently. I currently have it working by having a custom uboot that actually sets it up at 9600. Also if you want to use it for anything else than a serial console you also need to tell FreeBSD to not spawn the OS console. Ditching the custom uboot would certainly be welcome.