I don’t know much about Marlin source, nor am I proficient in C++. With that said, I took a quick look at the source. There is code supporting a third serial port. Apparently it is for use by DWIN DGUS displays. You might be able to repurpose that serial port code for your third serial port. DGUS_SERIAL_PORT is the define that enables the code and a good starting grep string to look for the supporting code. The only thing that gives me pause is that in a couple of places the term “internal” is used wrt this port.
Another approach would be to duplicate all the code conditionally compiled using SERIAL_PORT_2 as SERIAL_PORT_3. There might be a small amount of logic fixup and/or renaming. Most of that code is in MarlinSerial.c It is something that can be tried quickly. If it fails, then you might be in for a tough time getting it working. But it might succeed with little effort.
If you get a third serial port working, I’d appreciate knowing.