According to the problem mentioned earlier. I found the workable solution! The trick was, of course, to follow the workaround from Microsoft. But, I had to add one more workaround.
In case I found 'Added ' record, and I cann't tell sub items of VSSItem of the version and the previous version, I need to report all items inder that VSSItem as changed. This trick allowed me to build patch (for TeamCity version control integration) in the right way.
So the last portion is to handle renames and moves in the right way. The problem is that all changes are reported with path on the latest version, but not to the actual version. Thus, I have to implement some kind of mapping. Actually, apply backward mappings to all operations that was found in the history.