I prefer to use static arrays and enums like that because they are much faster than KV (and adt arrays). However they reserve memory for the whole array, while KV and adt arrays grow and shrink. For small arrays that reserved memory is no big deal (that Settings array is just ~6 KB).
I'm not that concerned about the memory usage, but the performance. Static arrays are fast. Implement some wrapper functions to easily add remove or modify elements in the array. Notice the InUse element in my previous example to simply mark whether a index (player) is in use or not.
Use static arrays if you want the best performance. KV and adt arrays have a tiny overhead due to the native calls. The overhead is trivial, but you might want to save some time in bigger loops and busy events like game frame or weapon fire events. That's why you want to cache the data anyways, in static arrays.