Well, I didn't want to go down that road but I can't honestly think of any other reason it would be behaving differently except that your "2560" is not the same as the garden-variety Arduino article.
I've looked at schematics for the Wemos board (well, one from "RobotDyn") and it looks like the UARTs are connected the same way.
I didn't read the whole thread but it seems like you wouldn't be the first to have trouble running the Wemos board as a 2560: Wemos Mega +WiFi R3 Module ATmega2560+ESP8266 - #3 by SniffTheGlove
but that stuff may not be materially relevant to what we're seeing here.
When you run the loopback you just keep seeing the first byte '50' on new lines. The only way it prints to the serial console is if it is in the receiving state, sees a framing error (so a break character) and received a 0x00 and if the frame.isValid() check passes.
Maybe you can add a debug print to the state machine to see what characters are being received:
rx = gruRxBuffer[rxTailPtr];
//split into the byte and status
b = (uint8_t)(rx & 0xff);
s = (uint8_t)((rx >> 8) & 0xff);
Serial.print( "** " ); //<-- add
Serial.println( b, HEX ); //<-- add