Have you tried any of the existing tensor packages (e.g. Tensors.jl, TensorOperations.jl)? They don’t have the symbolic indexing you’re describing, but they have a solid base of functionality that you’d otherwise have to build yourself.
If symbolic field names are critical, consider using FieldArrays from StaticArrays.jl.