The reason that the eventAddPose callback is called twice is because the new pose is connected to the scene and to the folder that contains the pose. Just check the lEvent.DstPlug pointer and only consider the event when the DstPlug is the FBScene.
Note that for the eventUpdatePose callback, you may receive it because the scene image thumbnail shown in the pose tool is connected to the pose. However, there is no really good way of finding out that a pose as been updated. Only internal data is updated on a pose when an update is done in MoBu, no connection is made, excepted for the thumbnail - this is why you may see it there and not at other time.