Ok I think I found something that helps:
http://stackoverflow.com/questions/8679406/get-startaddress-of-win32-thread-from-another-process
I was led to that by finding the following, and realizing you needed the symbol name for the thread's entry point:
http://stackoverflow.com/questions/5157083/getting-module-name-from-thread-information
The question asker in the first link says it works on getting the symbol name if he has the correct start address.
http://msdn.microsoft.com/en-us/library/windows/desktop/ms681323(v=vs.85).aspx">http://msdn.microsoft.com/en-us/library/windows/desktop/ms681323(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/ms681351(v=vs.85).aspx">http://msdn.microsoft.com/en-us/library/windows/desktop/ms681351(v=vs.85).aspx
That's using Interop though.
I looked for an equivalent method in the C# Diagnostics namespace, all I could find was StackTrace and StackFrame, which seems to do that , but only for managed threads, not OS threads.