When the battery is weak, it doesn't have enough power to turn the starter motor, PLUS operate the starter relay or starter solenoid.
So then the starter solenoid opens up - CLICK!
Once it opens, and the starter motor is out of the circuit, there's again enough battery power to power the solenoid and relay. CLICK!
Once the starter starts turning, battery power to the solenoid drops and CLICK! it opens and the cycle repeats.
When diagnosing these things you have the question: is it the solenoid? starter? battery?
The starter can draw way too much current (when needing a rebuild) and pull so much from the battery it can cause this phenomenon.
A bad relay that won't handle much current can do this.
Or, a bad battery with low capacity, or just not sufficiently charged can cause the same scenario.
In your case, it's now working after replacing the rotor, so obviously the battery wasn't getting sufficiently charged previously. I see no other explanation for what's happened. I have no answer why a volt reading would have told you it was fine, yet wouldn't crank the engine. But it seems obvious to me the battery wasn't filled previously to capacity.
Wanted: Dead, smashed, crashed or trashed gauges
BMW GAUGE REPAIRS - TACH*SPEEDO*CLOCK*VOLT METER *PODs & LIGHT BOARD*