Seems like the compartmentalization issues described could be solved by code names for everything. "Are you working on Unicorn?" "No, I'm working on Puppy."
If you're calling it "Walrus" internally, and assume that everything about it will be based on that name, and at the last minute, marketing decides that "FurSeal" tests better, then you're screwed.
If "Walrus" is just an internal mnemonic, then engineering and marketing can both beaver away and eventually release "Anthem". Or whatever.