Your "solution" is possible in many languages. It's just to give threads complete ownership of data they use. It doesn't require a special type system.
In general I don't think Rust actually adds much abstraction that isn't already in say Python. What it does is enforce tight constraints.
Not sure those optimisations are worth much. And it's only safety by forcing lowest common denominator code and making you justify everything to a dumb compiler. Rust serves a niche, but it is a tight niche IMO.
In general I don't think Rust actually adds much abstraction that isn't already in say Python. What it does is enforce tight constraints.