Id agree - newid() is a performance killer.
its much faster to do something like this...
DECLARE @RandomNumber float
DECLARE @RandomInteger int
DECLARE @MaxValue int
DECLARE @MinValue int
SELECT @MinValue = MIN(Id),
@MaxValue = MAX(Id)
FROM dbo.SomeTable
SELECT @RandomNumber = RAND()
SELECT @RandomInteger = ((@MaxValue + 1) - @MinValue) * @RandomNumber + @MinValue
SELECT TOP (1) *
FROM dbo.SomeTable
WHERE Id >= @RandomInteger