Relative paths are the preferred way to reference images, and should work just fine. So, your example of:
<img src="graphics\crabby.bmp" border="0">
.. looks fine to me, I don't know why it wouldn't work, especially if you used the "Insert Image" button to insert the <img> tag, because that would imply the program was able to see that the file was relative, and inserted the <img> tag using a relative path.
As a matter of fact, the only "relative" paths that wouldn't work are paths to images in the "images" folder. If you inserted an image that was in that folder (using the "Insert Images" button), it would use a full path, like "C:\Prorgam Files\The Tournament Director 2\images\pic.jpg". Otherwise, you would see broken images as you describe. However, with version 2.3.3, that has also been fixed. But this "fix" wasn't a code fix, it was done by moving where the TD stores its internally packaged image files, so there wouldn't be a conflict with where a user might reference their images from. So I suspect you are seeing some other type of issue.
When you reference an image "relatively", that just means you should start the path to the image starting at the TD folder, instead of starting it at C:\. So for a file "C:\Program Files\The Tournament Director 2\graphics\crabby.bmp", the relative path would be "graphics\crabby.bmp". %tdfolder% isn't a set variable, so it wouldn't work, and <TDFolder> is used when displaying some paths (just to shorten the length within the user interface).
If you like, you can export your layout and send it to me, and I'll see if I get the same broken images as you are seeing...