I think you've hit on a lot of good points. The race things certainly is a factor, but was undoubtedly honed in on a lot more due to the other aspects. They want a princess to be a "princess" and not an outspoken, fully formed human woman. Plus, the British press really loves having someone to hate, it seems. Remember how they vilified Daniel Craig as the next Bond - until those shots of him emerging from the ocean in his bathing suit appeared and they knew it was time to give that up and start adoring him instead.