Don't know if it's any better, but an alternative is: -
SELECT DateStarted, RowID, ProductID
FROM (SELECT DateStarted, RowID, ProductID,
MAX(DateStarted) OVER(PARTITION BY ProductID) AS MaxDateStarted
FROM #AllData
) a
WHERE a.DateStarted = a.MaxDateStarted
ORDER BY a.ProductID DESC;