You can apply the license of your choosing to your runtime as long as you don't use any of the code from our Spine Runtimes. You would need to do a clean room implementation of your own runtimes, without reading through our code so you don't inadvertently use our code and taint your runtime with our license.
Please note that while the JSON format documentation should be accurate for 4.0, it hasn't yet been updated for 4.1. This isn't us being tricky to make writing your runtime more difficult, we just haven't yet gotten the chance to do a full documentation pass. We also haven't updated the editor documentation (the Spine User Guide) for 4.1.
Have you considered binding our spine-c runtime using rust-bindgen? It will likely save you a lot of time and allow the core of your runtime to stay up to date as we do new releases, though with the downside that our Spine Runtimes license would apply.