I never lock threads. Often, duplicate threads get even more useful replies than the original because people don't have to get up-to-speed on a huge topic. "Completed" topics might benefit from new information.
Off-topic posts are a problem, but I'm not sure how to deal with them. I don't want to delete them on sight, since that causes confusion and makes people upset. The split/merge tools are not flexible enough to deal with larger cases without ruining the discussion.