Sorry to be "that person", but have you tried Rust yet? It checks a lot of your boxes:
- Access and control, nothing "behind your back"
- Low or high level, as you prefer
- Swap in different implementations (custom allocator, different async runtime, etc)
- Really powerful macros
- Strong conventions, safe by default (but you can break them, go into the weeds if needed)
Downsides compared to your list:
- More complex than C or Go (though less than C++)
- Only one production compiler, and everyone assumes `cargo` build system (though both are very good)
- Library ecosystem not quite as extensive (though there is a lot of good stuff on crates.io, and you can always write bindings to C)
The little things that seal the deal:
- Enums (tagged unions without the danger or boilerplate)
- Zero-cost closures
- Incremental compilation
- "If it compiles, it probably works"
- Standardized documentation via `rustdoc`
- Module system