Sorry, Fabio, I should have replied to this post long ago. I did spend some time looking at your ideas to improve SQL Server paging, including the use of CTEs, and GROUP BY instead of DISTINCT. However, I wasn't able to come up with an 'ultimate' solution. Maybe I needed to spend more time on it. Or perhaps there isn't a better SQL solution than what we already have.
I think the patch I have put forward is actually a low-risk solution because it applies an alternate query only where a DISTINCT query is being paged. This means that for all other cases, NH does what it has always done. Nevertheless I understand your reason not to include it in 3.2 - it was really just too late.
