I'm not offering this as an answer (at least not yet) but need more space than a comment provides to brainstorm about how to investigate this
I'd be tempted to take a safe "hello world" type app and merge it into the project as its own activity. Then comment out all the real functionality from the manifest and java files. That should leave only the hello world and the resources. See if the device survives uninstalling that after a run - if not, guess you might have to suspect the resources.
This should do the commenting - or you could just remove files wholesale from the tree
find . -name "*.java" | xargs -I f sed -i 's/^/\/\//' f
(Some editors will do block comment/uncomment, emacs will do arbitrary operations on a column of a file.)
Then I'd either uncomment the skeleton of the real activity - ie, all the onCreate, onStart, etc methods with no operations in them, and restore that activity to the manifest. Or else I'd restore functional java code, but leave the activity out of the manifest. You could then incrementally add more and more functionality until you get a crash.
If you have any ndk libs or even java libs you could play a similar game with those.
You can also try to run logcat during the uninstall and see if any messages make it out before the device hangs up on you.
Oh - and a major question, is this a kernel reboot, or an android runtime restart? In the later case, adb & logcat should probably survive, and /proc/uptime will not be reset to a small number.
If you get it down to a suspect operation, it would be great if you could post a description of that - I have a similar device in my test collection and would be curious to see if it has the same apparent bug. Also HTC has a number of "Developer Evangelists" who might be a point of contact.