However, given "I want these to be separate crates with separate Cargo.toml so dependencies are more isolated." and core and extra names, I would suggest looking into Cargo features: Page Moved
I haven't seen anything in the Cargo documentation that looks to me like the ability to specify the "root module" a given package resides within.
I mean, maybe you don't want two crates here? Maybe you want one crate with optional dependencies?
But if you do want separate crates, and do want to access them via a single interface, then you need to create a third crate, which will play the role of facade.
By itself each crate has its own root, only when you import it into another crate it becomes a submodule. So you can't specify such a "root module" in the crate itself.