One problem that still remains is that the user sees the page scroll before or after the transition. I think there is a simple solution to this problem using an intermediate blank page.
Scrolling from page A to page B:
1. Load page B into the DOM
2. Transition from page A to a blank page (no scrolling, yet)
3. Scroll to top (the scroll will be transparent to the user)
4. Transition to page B
Scrolling from page B back to page A:
1. Load page A into the DOM
2. Transition from page B to a blank page
3. Scroll to the previous scroll position
4. Transition to page A
To put it another way:
A => [intermediate blank page] => B
I know this might not be as smooth as a native app, but it would prevent the user from seeing the scroll and I think this would provide a better user experience.
I really think this is worth exploring. If you agree, please show your support for this idea by replying, tweeting, liking, +1ing, etc.