I don't know of any decent open-source alternative to GTKWave.
It doesn't have any decoding or analysis modules built-in or any plug-in support that I know of indeed. As you implied, it can handle huge traces pretty well and I also like its ability to display numeric signals as analog waveforms, that can be handy.
For decoding purposes (as well as debugging and verification on a more general level), I just implement decoders in my test benches, in HDL.
Implementing simple SPI, I2C or UART decoders for simulation purposes is pretty easy and has the added benefit to allow adding higher-level automated verification tests in your test benches.