p33t that works great if you just need to draw different text in a read-only way, but if you need to write data back to the model or draw something more complex than raw text passing a custom Cell would probably be easiest. The bad toString in your case might be due to not encoding something correctly before passing it into the SafeHtmlBuilder, but without the sample code it would be hard to say.
PropertyAccess is intended only as a shortcut to create many/most ValueProvider, LabelProvider and ModelKeyProvider instances. These three types are deliberately made as interfaces so any project can always build their own to satisfy their particular needs. It may be worth pointing out that XTemplates are generated using this same mechanism to get access to its properties.