Is there a way to pull data from bpy.ops without putting the model into Edit Mode
Edit multiple objects.
AFAIK it is impossible to use bpy.ops.mesh outside of edit mode. It would be possible to emulate the select non manifold operator in object mode, however since all objects can be placed into edit mode at once, and the operator called once, it feels unnecessary to bother

As of blender 2.8 it is possible to edit a number of mesh objects at once.  So instead of &quot;flashing&quot; each object, select all the objects to edit, call the operator once, then output the meshes total_edge_sel count, or update all edit meshes by either toggling out of edit mode or calling Object.update_from_editmode() and read the selected edges, and count the edges selected, to get both the total and which edges are selected.
import bpy

context = bpy.context
scene = context.scene

# select and put all in edit mode
for o in scene.objects:
    o.select_set(o.type == 'MESH')
# make sure active object is included
context.view_layer.objects.active = context.selected_objects[0] 
context.tool_settings.mesh_select_mode = (True, True, True)
bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.mesh.select_non_manifold()

for o in context.objects_in_mode_unique_data:
    print(o.name, o.data.name, o.data.total_edge_sel)

Test run on 4 objects in image, two cubes, a plane and suzanne.
Cube Cube 0
Plane Plane 4
Suzanne Suzanne 42

Note the second cube shares same mesh as first (linked data), hence only one with unique data shown.