James,
The difference between OB and OW tags is that OW requires byte-swapping if the Transfer Syntax of your DICOM doesn't match the endianness of your system. Changing the VR to 'OB' may work because that will basically tell DICOM readers and writers to not perform any byte-swapping. I'm not sure if this is a very robust fix or not, but you could at least test it out.
To modify the VR of a data element, you need to modify the DataElement instance that holds the pixel data.
ds = dicom.read_file('example.dcm')
data_elem = ds[0x7fe0,0x10]
# Then set the VR to whatever you want
data_elem.VR = 'OB'
I still think that a more robust solution could be to byte-swap your modified array prior to writing back to the PixelData element.
On a side note, It doesn't look like pydicom currently factors in if PixelData is OW or OB to determine if a byte-swap is needed. Byte-swapping should really only occur for OW VRs. Because of this, you may have difficulty reading the image back into pydicom.