Subqueries vs. JOINs
JOINs are generally faster assuming the fields on which JOIN is performed are indexed. Sub-queries can be useful to extract a very smaller subset based on an index and join to the main table. In my experience, JOINs have been superior performance-wise. Different databases may optimize JOINs and sub-queries differently. You may get varying results on SQL Server and MySQL (and their different versions). So measurement/estimation of performance is essential, which brings us to the next question
Measure/estimation time
My preference is to do EXPLAIN and EXPLAIN EXTENDED on query with JOIN and sub-query to get an idea of how the DB (assuming, MySQL) is using indexes. Run the queries against current dataset and then create a bigger dummy dataset 3-5 times the size of your current and run the queries against them on a non-production system. That will give you the number of seconds the query takes to run.
On SQL Server, when you do explain, you will see cost numbers. You could compare those for JOIN'ed query vs. sub-query'ed query and then perform a run with curreent dataset and a dataset 3-5 times (or 10 times) larger than the current to see how your queries perform.