Why are these buttons performing the same operation?
Give it a unique bl_idname

Both operators have the same bl_idname = "mesh.add_object". When you register you are effectively overriding the first with the second. 

Give it a name like

bl_idname = "mesh.add_retopo"


and call it in code with

bpy.ops.mesh.add_retopo()


or use its, now unique id in the UI layout.

layout.operator("mesh.add_retopo")


Links.

Why does operators bl_idname have to contain 1 dot?