Ordered products are already entities set up with EntityAPI. However, they are not fieldable. Make them so.
Making them fieldable would allow admins to add custom fields that they need, but that would not be appropriate for the general case. For instance, I have an author that gets a royalty of 20% of the list price of books sold, but the same book may sell for different prices. I need the SUM of that for all ordered products over a date range. Adding a custom Computed Field that calculates the Product list price times the Ordered Product quantity would solve the problem, since Views can take a SUM of that. It has the added benefit of working even if the list price changes.