I ended up pulling some code from a plugin to get this done by directly dumping the info into the database, then updating the unread vm count for the users. Quick and it works fairly well.
Here is the code if anybody else runs into this.
Code:
$vbulletin->db->query_write("INSERT INTO " . TABLE_PREFIX . "visitormessage
(userid, postuserid, dateline, state, pagetext, allowsmilie)
VALUES
('" . $uid . "','" .$reviewerid . "','" . TIMENOW . "','visible','" . $vm_text. "','1')
");
list($unread) = $vbulletin->db->query_first("
SELECT COUNT(*) AS unread
FROM " . TABLE_PREFIX . "visitormessage
WHERE userid = $authoruid AND state = 'visible' AND messageread = 0", DBARRAY_NUM
);
$vbulletin->db->query_write("
UPDATE " . TABLE_PREFIX . "user
SET vmunreadcount = " . intval($unread) . "
WHERE userid = $authoruid
");