Just add a row to the thread/post tables with an array of the tags and also (if you have xenporta) create a tag table for a tag block.
Then tags get loaded when the table data is read for output, from there you process the tag array to your liking. If you create a block for xenporta then yes it will add one or more queries.
To search a tag and see similar tagged posts, it would search the thread/post tag row and display based on your admin preference (title,date,rating, etc).
Ideally there would be user permissions to add, view and use tags. I don't want the public to use, search or see tags; only registered users but maybe you want them to use it.