2a) If you've organized your PLC tags for best performance, by having few top-level tags, and making them arrays of completely readable structures, every element of which is read at the same pace, then the Logix driver will make fairly efficient bulk reads. (As will mine.) The hit for using symbols instead of instance numbers will be amortized over many hundreds or thousands of actual values.
If you haven't organized your PLC tags and data structures, you are [expletived].
Not sure if budget allows, but performance wise, we've seen a lot of customers upgrading from even the L7x processors to L8x due to the better performance especially for comms (no more system overhead timeslice to deal with) and the dedicated core for communications.
Everything worked ok, but everything was also quite delayed. Changing to the legacy driver did make a very significant difference and is worth the effort.
PSA: the OPC path difference between the latest AB driver and both of the AB Legacy drivers is the omission of "Global." for controller-scoped tags, the repetition of array names, and the addition of ".STRING" for string tag reference. To update my UDTs to account for this, I've added a "Legacy" string parameter that is an empty string by default and can be filled in with "Global." (or whatever routine scope may be required) for use with the legacy drivers. Any string or array references will have a "_Legacy" derived UDT that will override the OPC path.
The legacy drivers also repeat array names. The v21+ driver uses OPC Item Paths that are the same as what you'd use in Studio 5000. (As does my alternate driver.) The legacy driver does not.
Not quite sure what you mean by "repeats array names" but I'm sure I'll find out soon. Sounds like another headache - wish there was a way to use expression functions in the expression binding for the OPC paths
Also good to note, initial creation of a string parameter in a UDT results in a "null" value, instead of a blank string. However, if you double-click the default parameter value input in the UDT definition, hit backspace, and then enter the default value is now an empty string, instead of null.