Different @code_warntype behavior depending on number of fileds in 'struct'

This is due to a heuristic in map here:

https://github.com/JuliaLang/julia/blob/7c45ff0e94d394911e26d851d33a611d4ac256a6/base/tuple.jl#L222

which is there to avoid overspecialization. Note that this has been increased to 32 in 1.7, so your example should be type stable in the next Julia release.