Turns out the charging light stayed on because the alternator had a fried diode and a loose nut.
The diode probably fried because the loose nut switched battery banks while the engine was running.
This loose nut learned another valuable lesson about boats: if you touch it or work on it, chances are it will probably break.