For mobile device I would vote for single input with validation since it is much faster and easier to enter time alltogther rather that switching between inputs for tracking runner time
Input is heavely validated to make sure user match desired format: __:__:__.____
This process of entering time will happen over and over again so runner and coach will get used to it quite fast.
Put some UX magic for different formats (if user is somewhat ok not to entr milliseconds):
- 12:10 -> minutes and seconds
- 12:12.123 -> minutes and seconds and millis
- 1:12:10 -> hours minutes and seconds
- 1:12:12.123 -> hours minutes and seconds and millis
You can go much further to actually replace the stopwatch by your web app: Two big buttons: START and LAP. Time will remain accurate till milliseconds and thereit will not be required to enter it at all.