The clearanceMinutes value is producing the undesired result here. That config is the threshold at which events are allowed to overlap each other and defaults to 45 minutes. The idea being that the details rendered probably don't go beyond that much vertical space in the event. At a level of 2 minutes, events will overlap each other even if their start times are nearly identical. You can effectively disable this by setting clearanceMinutes to a large value. In the example data you've shown, simply removing it will likely have the outcome you are wanting.
The value of 5 for clearanceMinutes means that events starting >= 5 minutes apart are allowed to overlap which is why the code you have allows the last 3 events to overlap as they do.
The rendering inside your events fills about 30 minutes of vertical space, so the default of 45 (with that key removed) may be good if you have a lot of overlapping events, but If you'd like events to basically never overlap, you can set clearanceMinutes to a large value such as 1500 (24 hours = 24 * 60 = 1440).