Awful performance on joined queries while great separately
A stretch but give this a try
Just deals with one t.[IntField] at a time and union
Now you have 1/3 only comparing to 1/3 so it may be 9 times as fast
And the query optimizer may miraculously decide not to do a loop join  

SELECT t1.[IntField]
     , CONVERT(varchar,t1.[KhDateTimeField],121) AS 'TDateTimeField'
     , t1.[FloatField1], t1.[FloatField2], t2.[FloatField3]
FROM
(
SELECT t.[IntField], t.[TDateTimeField], t.[FloatField1], t.[FloatField2]
     , dbo.fn_roundToCloser10Min(t.[TDateTimeField]) AS 'KhDateTimeField'
FROM [DB].[dbo].[Table1] t
WHERE t.[TDateTimeField] &gt;  CAST('2016-03-01T00:00:00' AS DATETIME) 
  AND t.[TDateTimeField] &lt;= CAST('2016-03-10T00:00:00' AS DATETIME)
  AND t.[DateInt] &gt;= 20160303
  AND t.[DateInt] &lt;= 20160310
  AND t.[IntField] = 206 
) t1
INNER JOIN
(
SELECT t.[IntField], t.[TDateTimeField], t.[FloatField3] 
     , dbo.fn_roundToCloser10Min(t.[TDateTimeField]) AS 'KhDateTimeField'
FROM [DB].[dbo].[Table2] t
WHERE t.[TDateTimeField] &gt;  CAST('2016-03-01T00:00:00' AS DATETIME) 
  AND t.[TDateTimeField] &lt;= CAST('2016-03-10T00:00:00' AS DATETIME)
  AND t.[DateInt] &gt;= 20160303
  AND t.[DateInt] &lt;= 20160310
  AND t.[IntField] = 206
) t2
ON t1.TDateTimeField = t2.TDateTimeField 
UNION 
SELECT t1.[IntField]
     , CONVERT(varchar,t1.[KhDateTimeField],121) AS 'TDateTimeField'
     , t1.[FloatField1], t1.[FloatField2], t2.[FloatField3]
FROM
(
SELECT t.[IntField], t.[TDateTimeField], t.[FloatField1], t.[FloatField2]
     , dbo.fn_roundToCloser10Min(t.[TDateTimeField]) AS 'KhDateTimeField'
FROM [DB].[dbo].[Table1] t
WHERE t.[TDateTimeField] &gt;  CAST('2016-03-01T00:00:00' AS DATETIME) 
  AND t.[TDateTimeField] &lt;= CAST('2016-03-10T00:00:00' AS DATETIME)
  AND t.[DateInt] &gt;= 20160303
  AND t.[DateInt] &lt;= 20160310
  AND t.[IntField] = 207 
) t1
INNER JOIN
(
SELECT t.[IntField], t.[TDateTimeField], t.[FloatField3] 
    , dbo.fn_roundToCloser10Min(t.[TDateTimeField]) AS 'KhDateTimeField'
FROM [DB].[dbo].[Table2] t
WHERE t.[TDateTimeField] &gt;  CAST('2016-03-01T00:00:00' AS DATETIME) 
  AND t.[TDateTimeField] &lt;= CAST('2016-03-10T00:00:00' AS DATETIME)
  AND t.[DateInt] &gt;= 20160303
  AND t.[DateInt] &lt;= 20160310
  AND t.[IntField] = 207
) t2
ON t1.TDateTimeField = t2.TDateTimeField
UNION ... 208  


If it works then you can just make two stored procedures where you pass in the 5 conditions for the base select and the syntax becomes pretty simple. 

Materializing is the safe path.  But use #temp over table.  An index on [IntField] may help but with only 3 unique values it may not help.  Even with materializing make some stored procedures to reduce syntax.