Yes.
There's probably multiple things we can do to ease the work, and refacting std is a big project itself. I do prefer to avoid doing experimental coroutine work directly in tree - rather would add hooks and refactorings to make it easier to do the work out of tree, perhaps with a small patch set against std. When you are getting into 'swap out entire module' territory that does sound to me like it calls for some work making it easy to do that swap, which leans in the 'std-pal' direction.
It's hard to say without a better understanding of what modifications to std are needed. At the least, it requires a different TLS implementation right? What are the other big pieces? Can we limit the scope to start such that we don't need to make std::io coroutine aware? As in, let's fix the horrible problems that make coroutines in Rust not work at all first, then move on to making std itself built on top of an event loop so that I/O doesn't block.
We don't need to get a full pal working to move on this, can move in that direction piecemeal. As just a guess about what's needed I might expect to pull the entire TLS implementation into its own crate. Then out-of-tree you can maintain a build that replaces the TLS crate with coroutine-aware TLS. That refactoring can feed into the larger pal as it evolves.