> One theory I have about what 'might' be happening is that before I make > my servce call, I'm adding event listeners for the result/fault and > these may be duplicate ones, because the remote object instance is being > persisted in ServiceLocator. However, I tried explictly removing the > listeners before adding them and no dice.
sounds like the most likely thing to be happening. try setting a breakpoint on where you remove / add the listeners and check that the references are the ones you expect, i.e. you are not trying to remove a different listener or something.

