Select Queries From Parent-Child Tables Model
Select *
Generally, it is advised against using SELECT *. The answers to this stackoverflow question explain why SELECT * is considered harmful.
Your queries might return different values
The first query takes the transaction record with the latest CRTime, the second uses the highest ID. These are likely returning the same rows right now, but I would use the CRTime. The rows might not have been inserted in time order, so the most recent time and the highest ID might not result in the same record.
I would recommend the first query
I would recommend the first query because it avoids that second join that the second query has. Other than changing the SELECT *s to list all the columns and making sure the tables are properly indexed, I don't think there is much you can do to improve it. That's a pretty nice query.
Select * and Indexing
One of the problems pointed out in the linked SO question is that fact that using SELECT * can cause the query to not use indexing properly as it brings back more columns than you need.
Checking runtimes
I found this stackoverflow question had some good answers regarding comparing SQL runtimes/performance.