For your example with ContactAttributes and ContactAttributesDetail, the best would be to use the cache, which is implemented on the client side already.
This will use the cacheable interface, and you might need to add your tables to that system.
Please have a look at TDataCache.TMFinance.GetCacheableFinanceTable(TCacheableFinanceTablesEnum.CostCentreList, ALedgerNumber); as it is used in csharp\ICT\Petra\Client\lib\MFinance\logic\FinanceControls.cs for example.
Christian wrote the caching system, so he might be able to provide suggestions.
I am wondering about the several types of connectors myself.
WebConnector vs ServerLookup: I am not completely sure, but I prefer Webconnectors over ServerLookup, and it is basically the same. I think the generateGlue is done better for WebConnectors. I have been using WebConnector for most of the new functionality, although there are issues with long running queries etc.
UIConnectors are a bit of a problem with browser based applications, though the Web Connectors are also not so easy because of complex datastructures like DataSets etc.
I am currently working on implementing access permissions for Web Connectors, and we have to see how that can be done for other types of connectors as well.