I have done this using tasker. You are completely on the right track, instructions below.
SQL to find contact ID
Find the unique contact ID from the contacts database (which it seems you have already done). In case you have the wrong ID you can check with the SQL instructions. I had a few issues with this given I was only entering the first name when looking for the contact, and for some reason it wasn't being found. Anyway, this SQL query should work on the file: /data/data/com.android.providers.contacts/databases/contacts2.db
You can use a SQL app/program, browse to that file, and enter the SQL query:
SELECT _id FROM data WHERE raw_contact_id LIKE (SELECT _id from raw_contacts WHERE display_name LIKE "Contact Name" ORDER BY _id DESC LIMIT 1) AND DATA4 LIKE "10" ORDER BY _id DESC LIMIT 1
Or you can enter this command into the terminal provided you have sqlite3 on your specific device (often not included in production release devices):
sqlite3 /data/data/com.android.providers.contacts/databases/contacts2.db 'SELECT _id FROM data WHERE raw_contact_id LIKE (SELECT _id from raw_contacts WHERE display_name LIKE "Contact Name" ORDER BY _id DESC LIMIT 1) AND DATA4 LIKE "10" ORDER BY _id DESC LIMIT 1' | sed s/\"//g
Just replace "Contact Name" and put the contact you want to open inside the quotes. The full contact name preferably.
I was working on a solution for this, but app backup is explicitly disabled in the contacts app manifest. Try the solution below and let me know if it works. I wasn't able to test it without root.
Install Tasker and AutoContacts. AutoContacts is paid, but you can get a in the next 15 minutes after buying the full version if you just want to test it.
Setup a task in tasker, name it, then add a new action Plugin > AutoContacts > AutoContacts. Then in the configuration type in "Contact Name or Nickname" the name of the desired contact. Press the tick. Press the back button in Tasker to get back to the list of actions for that task (you will have 1 now). Add a new action Alert > Flash. Press the button on the right of "text" that looks like a label and select "Autocontacts: 01. Hangout Uri ... %achangouturi". Press back to go to the action list. Press back again to save the task. Go back into the task and run it. The ID that you need for the contact you want will be at the end of the string that flashes up and will usually be 5 digits long. Run the task again if you didn't catch it in time.
Creating Tasker task
Once you have the ID copied down, you need to go into Tasker to create the task that will open hangouts to the conversation. You have the right idea to use an intent, it is just a little different from what you already have. In the new task create a new action "+" select System > Send Intent. Create the intent in the following format:
Mime Type: Leave blank
Extras/package/class: Leave blank
Where ##### is the contact ID you found earlier. Mine were all 5 digits long.
Now you should be able to use this task for whatever your heart desires. Give it a test by pressing the play button in the task in Tasker.
A quick note, I mainly use mine in conjunction with AutoVoice in order to open a message I just got sent. I found it very useful to be able to launch hangouts back to the main screen and actually found this quite difficult as the Tasker "kill app" wasn't completely restarting hangouts. I found the way to do this is create an action "Launch App" and select the "Always launch a new copy" checkbox. This will always open hangouts to the main threads list.
Most of this is from this Google Groups discussion. Good luck, let me know if you run into any troubles.