Yes I think we should relook at the api. I don't think we should add a tcl api that only gets a single attribute. It maybe that the CR tcl api is not one to one with CR plpgsql api. As for bcms I tried to standardize in returning an array for single item, and multirow for many items.
You can look at the ctk core. new, get and update calls is able to handle additional properties for a sub type content type. I still use array to return a single object, list of lists to inject or update attributes. Just don't look at how its implemented, its still needs to be change :) The idea is wrap things on an api that does new, get and update easy for end developers.