Yes - deadlocks are not hard to perfectly prevent. It comes with some consequences, but they're not too crazy. Though without provable termination, I don't know of any that prevent livelocks (and many deadlocks just become livelocks in a deadlock-free system, though design habits often change to mitigate this somewhat).
The only ones I know of that prevent both are really proof-oriented languages that cannot run an infinite loop, which disqualifies them on many technical and practical considerations. But they do exist.