avrdude: stk500_getsync(): not in sync: resp=0x00avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51
fuses are set accordingly, E/H/L = 0xFF/0xDE/0x05.
Did you mean to write "L/H/E"?
Yes, 16MHz crystal with 18pF caps as specified in the crystal datasheet.
You suspect the USART is a problem so try a simple test... upload and test an echo-back Sketch using ICSP. Try a low baud rate (9600) and a high baud rate (115200). If that works, the USART is very likely working correctly.
If you're using a pair of 18pF capacitors with a recommended crystal Cl of 18pF, you're out of range. In such cases it may work on some AVR's, but marginally so.