that is easy these days (be it that they still suffer from stray magnetic fields from e.g. your motor).
they do need calibration and maybe a bit of averaging the measurements, but you do get your roll and pitch as well, since it is 3-axis !
have a look at this thing, I have it, it works nicely(as a compass). I have it for other reasons and it has not been used in a boat. it is reasonably small. It sounds you are having a microcontroller in the boat. it needs one.
The controller I show below is somewhat arduino compatible, so it is easily programmable. check out that JeeLabs site and modern devices for more sensors, like pressure sensors (check out the BMP05, which detects a feet of altitude difference in air! and the MPXV with tube attachment on Modern Devices; these could be used as "pitot tube" as well)
compass module : http://shop.moderndevice.com/products/3-axis-compass
main controller with 868 Mhz transmitter: http://jeelabs.com/products/jeenode
as for a speed sensor, maybe it is as simple as a heated resistor. that is a trick that works in air. it should work in water as well. maybe better even. following this principle :http://shop.moderndevice.com/products/wind-sensor