Я бы пошел с парой общих табличных выражений.
Первая выберет все записи из таблицы, а также количество записей на подпись, а вторая выберет одну из первых, где количество записей> 9, и добавит row_number, разделенный по сигнатуре, а затем просто выберет тот, в котором row_number 1 или 10:
With cte1 AS
(
SELECT ID, Signature, Datetime, COUNT(*) OVER(PARTITION BY Signature) As NumberOfRows
FROM #Sigs
), cte2 AS
(
SELECT ID, Signature, Datetime, ROW_NUMBER() OVER(PARTITION BY Signature ORDER BY DateTime DESC) As Rn
FROM cte1
WHERE NumberOfRows > 9
)
SELECT ID, Signature, Datetime
FROM cte2
WHERE Rn IN (1, 10)
ORDER BY Signature desc