Thanks for the explanation! These issues should be fixed by refresh awareness and update inhibition.
For more info and future plans, see [WIP] Refresh App Awareness
Having this option set you can try to manually refresh a snap to another channel or to simply refresh to a new revision arriving on edge. For as long as the snap is busy it the refresh will be inhibited. A snap is busy if it has running non-service applications or hooks.