I'm sorry. That's a known issue with any AVR board that doesn't match the incorrect baud rate generated by the 16MHz ATmega chip. See the long discussion here.

The ATmega MCU cannot generate a correct baud rate at 16MHz. The issue is so bad that Arduino make a special incorrect exception to the normal USART calculation to match the incorrectness of their core chips to the incorrectness of the the ATmegaXXu2 chips they use for the USB-USART function.

Any board that tries to use the ATmegaXXu2 for the USB-USART function is going to have this issue. Many clone manufacturers (Sparkfun, Seeed) have returned to using the FTDI FT232 chip.

Also, in future versions Goldilocks of I will never again use the ATmegaXXu2 as a USB-USART function. I'm going back to use the original FTDI FT232 solution that was originally used in the role. That chip works well in its role.

The most stable way to program an Arduino or a Goldilocks is to use an ISP to do the programming. Bootloaders are inherently unstable, and I still kick myself daily about this issue.

---

To Ethernet. Did you try dropping the SPI rate lower to SCK/8? I think that might be cure for your issues.