When working with Arrow vectors recently, we observed a situation where our time was dominated by calls to getFieldBuffers() to be able to retrieve memory addresses (22s out of 26s total for a piece of code). We should provide a direct mechanism to access this data so we can avoid all the extra indirection and object creation.
These interfaces would be made available at the FieldVector interface and simply throw UnsupportedOperationException where not supported.
data for list type
offset for fixed width types
data and offset for struct type
data for union type