Process not running but app shown in dock
I seemed to have at last found a way to get over this. It's rather crude, but worked for me.

if errorno = -600 then 
                    tell application "System Events"
                        tell process "Dock"
                            click UI element "Contacts" of list 1
                        end tell
                    end tell
                    delay 10 -- allow sometime for the process to appear in the process list
                    tell application "System Events"
                        tell process "Contacts" to set visible to false -- run hidden
                    end tell
                end if

By forcing a click in the dock, the process re-appears in the process list and then the app can be quit, or restarted, or whatever. Weird.