Don't know, what's wrong with your solution except that leap years does'nt have 365 days. If I would write that query it would look like this
SELECT [Emp_No]
, [JoinDate]
, CASE
WHEN ([JoinDate] < getdate()) THEN DATEADD(YEAR, 1, [JoinDate])
ELSE [JoinDate]
END AS [PeriodEnd]
FROM [dbo].[<Tablename>]