This should do what you need using a LEFT JOIN
to get the optional value.
SELECT COALESCE(b.Name,a.Name)
FROM Table1 a
LEFT JOIN Table1 b
ON a.id=b.id AND b.variant=@y
WHERE a.id=@x AND a.variant=1
Performance wise, it would depend on how you need to apply the query to get multiple fields. If you can solve your column choice using COALESCE
from the existing join, I can't see a big problem, but if you end up with multiple self joins to solve it, you may have a problem.