How can I scale all objects in the scene about the origin using Python?
No solution, but a hint (cannot comment):

Your code runs the danger of scaling parented objects more than once.
You could filter/only scale objects with no parent (root scene objects)...like so:

root_objects = []
for obj in context.scene.objects:
    if not obj.parent:
        root_objects.append(obj)

for obj in root_objects:
    ...