I don't like the inheritance model either, so this is what I did.
For the Master Page, i added these macros to the Page Title, Page Description, Page Keywords:
{% !string.isnullorwhitespace(MenuItemSeoTitleOverride) ? MenuItemSeoTitleOverride : DocumentName @%}
{% !string.isnullorwhitespace(Abstract)? Abstract : CMSContext.Current.Settings.GetValue("MtwDefaultMetaDescription") @%}
{% !string.isnullorwhitespace(Keywords) ? Keywords : CMSContext.Current.Settings.GetValue("mtwDefaultPageKeywords") @%}
I added to Pages the fields "MenuItemSEOTitleOverride", "Abstract" and "Keywords" which is what these reference (plus two settings keys that tehy can set the Keywords/Abstract default values globally)
This way, the Page Title will use the Document Name by Default, or the override if they provide. The description will use the 'Abstract' field of the page if provided, otherwise the site setting, and same for keywords. Works out well! Then all pages can "inherit" this macro.