Brainstorming: Cause and effect:
On the coil that creates the magnetic field that forces the contacts to close, Only problem I see that you could have would be a significant over voltage in your electrical system ( or open wiring discussed later). However, even if you did there are limitations as to high it could go, like 16V for a number with no voltage regulator on the engine or it having failed, and the voltage would produce heat from excessive current which, if high enough, could melt the insulation on the coil windings and cause the turns to touch each other. This would result in a reduced resistance condition what would cause more current to flow and the condition would progress until either a wire burned into (open circuit) or the fuse protecting this circuit would blow. However, considering the short time the coil is energized, my opinion is that it won't happen; so excessive voltage doesn't seem to be the smoking gun.
If the ground or applied voltage (12v) connections are opened, for whatever reason (corrosion) then the coil will not energize. If you have a high resistance connection in the wiring then enough voltage could be dropped across that connection such that when subtracted from the available voltage, there wouldn't be enough left to operate, or hold the solenoid energized. Unless the problem is at the terminals connecting to the solenoid, I don't see this fitting your senario unless the corrosion is at the ignition switch terminal, or could be the ignition switch itself which I wouldn't rule out even though you changed solenoids and the problem repeated.
On the contacts, you have a couple of solid copper discs that are moulded onto a copper, threaded studs where your high current wiring connects. In conjunction with these two posts you have a large copper disc that is attached to a rod that is spring loaded and sits just above the energizing coil. When you apply voltage to the circuit mentioned above the magnetic field sucks the rod down into the center of it and in doing so forces the disc to contact the two posts mentioned and you have a high current completed circuit.
For that part of the circuit to fail you would have to burn up that interface which is not easily done. What happens to these things, regardless of application, boat, car, truck, tractor...... is that over time the interface pits due to arcing making peaks and valleys. As they increase in amplitude, they reduce the surface area of the contact and the failure mechanism is that there is not sufficient surface area to conduct the 150 amps (give or take) your engine needs for cranking at which time the solenoid clicks, but the starter doesn't turn.
For you to have the problem mentioned, I'd think that your problem is corrosion in the small wiring that supplies power to the solenoid coil, or a bad ignition switch ceasing to make continuity between the 12v supplied to it and the START terminal. If you have a voltmeter, (Harbor Freight has some great little ones for $5....been using them for years), take it with you and the next time you have this problem, put the meter on DC volts, 20v scale. Put the leads on the two small terminals on the solenoid.....between one small terminal and the case if you only have one small terminal....the other side is grounded through the case to the engine block). Turn the key to start and , with the leads on the nuts holding the small terminals onto the solenoid case, check the voltage. If you don't have at least 10v, you have low current wiring problems and corrosion in the connections or the ign. switch are main suspects in my opinion.
Phew.
Mark