In case of an OOME, we would recycle the nativeData we just allocated,
even if the BinderProxy.getInstance() call got far enough to register
the allocation for automatic freeing. This could cause a duplicate
deallocation.
This changes the code to be much more careful about handling native
deallocation correctly in the exception case.
Bug: 72707270
Test: Build and boot master.
Change-Id: I2cffdd1d59af95f089714893e819c2d02302a6d4