The main purpose of RTD is to allow you to push data into Excel - there is no other reasonable mechanism to tell Excel to update a cell. Using RTD, the cells can recalculate exactly when there are changes in the data.
The overhead of a function call to the wrapper function should be tiny, but the only way to avoid that is to have the RTD call directly in the formula, which won't help your scenario at all.
The wrapper function might not be returning exactly the value set for the topic in the RTD server (and in the case of ExcelRtdServer it doesn't).
I guess if you had to manage many millions of cells updating at sub-second rates, it might be worth considering a C-based wrapper function, which could avoid some of the string marshaling and the overhead of the managed transition.