I also use cross-references, which I get our script to generate:
http://www.id-extras.com/products/livetoc
If you can use InDesign to generate the initial text of the TOC, then
set up and run LiveTOC, all the page numbers will become live
cross-references very smoothly. At that stage you can forget about
jumping through loops to make InDesign's TOC feature do what it doesn't
want to, and simply edit and format that TOC exactly as you want, and
the page numbers will simply update automatically as the book is edited
and pages are added, removed, and moved.