From the cut sheet (Stiebel SBB 300 PLUS cut sheet):
Tank shall be constructed of steel with porcelain enamel coating on all surfaces in contact with DHW. Tank shall be insulated with urethane foam insulation 2.95 in. (70 mm.) thick to R-21 with an ABS outer casing cover. Standby heat loss shall be between 1.9 and 2.9 kWh (6,500-10,000 BTU) per 24 hours. Tank shall be delivered wrapped in plastic on a one-way pallet. Tank shall have been pressure tested to 217 PSA/15 bar and the maximum operating pressure shall be 150 PSI/10 bar. Tank shall be ETL certified in USA and Canada to IAS U.S. Requirements for Indirect Fired Water Heaters For Use With External Heat Source. No 1-91, Dated June 6, 1992. Tank shall be equipped with welded steel plain-ended pipe heat exchangers, hot water corrosion protection via special enamel coating and magnesium sacrificial anode, three immersion sleeves for housing of temperature probe and thermometer, circulation socket, inspection/cleaning port with cover.
So the tank is glass lined and the heat exchangers are steel (not stainless) with a “special enamel” coating. Anode rod is magnesium.
I was also wrong about the capacity, which is 80.6 gallons, a far cry from 300 gallons!
Yesterday, I poured a 32 ounces of hydrogen peroxide 3% in the tank and this seemed to help. A lot.
Thanks for all help! The day before yesterday I had assumed the problem was the chlorinator, until it dawned on me that the smell was only at the HW taps. So, I feel like enormous progress has been made already.