Looking for a fully internal one-time switch
You could use a reed switch directly, or have it activate a latching electronic circuit.

If you can permanently arrange to keep a magnet in the right place, then just a reed switch could work.  The magnet placed in a special holder or something then becomes the on/off control.  This should be fine as long as your current requirement is low enough for a reed switch to handle.  Considering you are talking about running for 2 years from batteries, the current should be well within the capability of a reed switch.  In fact, you may have the reverse problem of not having enough wetting current.

Having a latching mechanism has a downside.  If it ever gets accidentally activated, then the device is irreversibly on.  A single reed switch closure seems rather risky for this.  That's why I was thinking of keeping the magnet attached for the duration the device is supposed to be on.

Another option is to have a reed switch activate a electronic latching circuit.  The pass element would be a FET with low enough RDSON for the voltage drop to be inconsequential.  Check the leakage current and make sure that wouldn't cause too much battery discharge during the 1 year storage time.

If using a read switch as a momentary input to latch the device on, then you should require a sequence that is very unlikely to happen by accident.  At least require the switch to be closed for some minimum time, like a few seconds.  That way vibration and shocks, like accidentally dropping the unit, won't latch it on.

In my KnurdLight project, I required two button presses to turn the light on.  Each had to be about &frac12; seconds with &frac12; second gap between them.  To do something like that, the reed switch powers up the processor, which then turns on the electronic switch.  If the right reed switch sequence isn't detected, then the processor turns itself off again.

Yet another totally different option is a pressure switch.  The unit doesn't power up until it is some minimum depth below water.