you can definetly use a function in a join but without variables.. in case you want to use variables try using Dynamic SQL..
DECLARE @sql NVARCHAR(3000)
SET @sql = N 'SELECT * FROM Coverages c
LEFT JOIN (SELECT dbo.fn_Build_ADM_Table_Name('+@ReinsYear+', 'Dates')) AS adm
ON adm.State_Code = c.State_Code '
EXECUTE(@SQL)