Completely removing scene (including all objects/materials it contained)
Maybe you can consider starting with a new blend file (empty), then you pass to addon the source blend file. The addon can link the scene/collection from the source file, render and remove linked. Then repeat the process.

Or, to follow your initial setup, you could put the whole scene in a "root" collection and then call bpy.ops.outliner.collection_delete (hierarchy = True). In theory with hierarchy = True it should delete all the objects contained.