To emphase what David says: ContractDetails and Market Data are 2 very different beast.
ContractDetails is a heavy call of rather static data.
MarketData is small and highly dynamic.
You can't expect performance in a call that deliver you all at once like some REST provider does. They waist precious bandwidth and processing time delivering too much at once.
Hope it help understanding IB performance driven philosophy.