Hi fil.
There are several ways to approach your issue.
You can store every images as part of the animation of a sprite.
Set the animation speed to 0, now you can use the sprite as an "image bank", randomly chosing the animation frame to display.
As you said, it needs to load all images first (on load of the application to be exact) but using image compression in C2 you could load up a fair deal of images and still have a reasonable download size at the end.
From there you can use an array object and set a sentence to correspond with the frame number in the sprite.
There's no built-in way to load images at runtime, they must be loaded in the IDE on edittime.
But you could use the third-party plugin way.
You could try Load image from url at runtime or yet the CSV plugin.
Check the list of custom behaviors and plugins and see if you'd find something that fit your needs.