I would guess then that the achetecture, is building onload events based on source name, rather than the number of times it is called. It seems as if all the onload events for a single img source are being bundled into one array, which is bad news if the context of a new canvas is not ready when the onload event has already fired.
In the following examples I have added a small for-loop delay to increase the visibility of the issue.
Here is an example of firring multiple img load events on the same image SRC file:
Here is an example of firring multiple img load events on the different SRC files: