Note that a.b.clone() is only incrementing the Rc count -- is that what you intend? This is still pointing to the shared RefCell, so it does need the borrow_mut intermediate.
Then you can define your B with Rc<RefCell<_>> for private fields, or perhaps even an entire InnerB type.
I didn't realize before that this was in the internals forum, but this kind of question is more suited for users.rust-lang.org, and you'll probably get more active responses there. If you get some concrete idea of what could be added or changed in Rust itself, then that would be welcome back here.
What is your reason for not wanting the .borrow_mut? Do you just not want to type it?
One solution would be to create a newtype for Rc<RefCell<B>>, and make a getter on A that returns that instead of the Rc directly. Like this (I renamed your B to BInner):