You almost certainly do not mean to be doing this - you are telling the grid to make an RPC call for every cell to be drawn in this way. Even if you only have a dozen rows to draw, and only use this setup in a single column, that is still 12 calls that will go off at once - and chances are your browser will only allow 2-8 of those to run at a time (depending on the browser, version). Add in something like paging or updating items, and you are looking at a lot of traffic.
Additionally, SafeHtmlBuilder is like StringBuilder - you can use it to append a bunch of items, then turn the whole collection into a string. The code that created the SafeHtmlBuilder is not waiting until every possible RPC call has finished to create content and append it to the dom.
Why are these items not loaded into the models themselves? They all still need to be loaded before the grid can be drawn. If you are loading the basic items themselves first, and deferring loading part of each item, you could make that call just before the grid is drawn, update or modify the rows, then draw the grid.