Python: empty cache before rendering?
Found a solution, which has nothing to do with caching:

The animation displays a PNG image (texture) which will be replaced by particles that then disappear. The image seems to be dissolving.

To change the image dynamically, a Python script assigns a new PNG to the texture, with bpy.data.textures['Logo'].image = IMAGE.

What was missing was to also update the texture for the particle emitter. This can be done as follows in Python: bpy.data.particles['ParticleSettings'].active_texture.image = IMAGE

Without updating the particle emitter, the visible image would change, but the particles would still emit from where the old image was.