One thing you can try is to use the User Defined object identification in QTP. It is only available for the Standard Windows environment, but if your object or objects act similar to regular objects like you mentioned, it might work for you. This isn't too hard to implement.
1. Under the Tools menu in QTP, navigate to Object Identification.
2. Change the Environment drop down to Standard Windows.
3. Click the User-Defined button in the lower left hand side.
4. In the dialog box, click the finger icon and point to the object that is giving you problems. QTP should learn the new unique class for this object and populate the class field.
5. Here's the tricky part: Select the standard Windows object class this new object most closely matches. This make take some trial and error to get correct.
6. Click the Add button. If you find you need to make a change to an object you've learned, click the object in the list, change the mapping, and then click the Update button.
7. Repeat if needed.
To find more details on this, you can find it in the User's Guide for QTP under Object Identification.