AsyncAddinInvocationMethod: replace queue of results by dictionary

- return call id for asynchronous call
- if the same function is called again with that call id, the result is returned (and is waited on, if not available)