@opiator: If you want to show alternative output depending on states, the pages are not cacheable. However, if it is important you still have some options.
But first you have to realize that despite its name, the master page is not really a page, thus it cannot be cached like a normal page. ASP.NET plays a trick on you: A master page is in reality a top-level control on the content pages. When you use output caching on a content page, the entire page including the output generated by the "master page" control (the content controls being children of this) is output cached.
@pinch: IMHO the RoundedCornersExtender is one of the most useless controls of the toolkit. You are better off designing the corners yourself and using markup/CSS to place them. You are correct that when you can use output caching on both control and page level. When you use output caching both pages and controls always cache all of their output, including child controls. Except, you can use a special substitution control which will be replaced by a string from a static page method.
The best way to cache is to cache the entire page, if possible. That will also let downstream caches do the caching, i.e. the browser itself. That can really safe you requests. If that's not possible you can perhaps get by using substitutions. Or you can accept that the page is uncacheable but maybe parts of the page can be cached, typically "expensive" parts - in terms of computation/latency.