Just try this query:
SELECT threads.id
FROM threads
INNER JOIN thread_user ON thread_user.thread_id = threads.id
INNER JOIN messages ON messages.thread_id = threads.id
WHERE thread_user.user_id = 1
AND threads.draft = false
AND messages.user_id != 1
INNER JOIN give you the intersection between two table based 'ON' your condition "thread_user.thread_id = threads.id"
your 1st query give u the intersection between threads, and thread_user --> as table_1 and your 2nd one give u the intersection between threads, and messages --> as table_2
what I done is simply getting the intersection between messages, and table_1 -which is the intersection between threads, and thread_user-
and I collect your conditions from the two queries, and add it to the new query.