Discover: fix race condition.

Was previously scanning for duplicate entries in serviceResolved() then separately posting them to the UI thread to be added to the display.  If responses come in too fast, the timing could cause expected data to not yet exist (yet), and thus both items get displayed.

Fixes #39