EmailSendDefinitions don't tend to get used that much these days, but you can view the retrievability/updatability of a SOAP object by using a Describe operation. The SOAPAction header needs to be "Describe". Here's a sample payload:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www....
You need to use PricebookEntryId instead of Product2Id. From the OpportunityLineItem doc on Product2Id field:
This is a read-only field
available in API version 30.0 and later. Use the PricebookEntryId
field instead, specifying the ID of the PricebookEntry record.