Is there any way to programmatically reset the BWP bit on a PIC32
Answer based purely on the information provided in the Reference Manual. Contacting Microchip tech support would probably be a good idea.

Q1: Can BWP bit be reset?

No, since the configuration bits are stored in the BFM, which is write-protected. From the PIC32MX Reference manual, Section 32.2.1:


  In the PIC32 device families, the Configuration Words select various
  device configurations, and are located in the last four Words (32-bit
  x 4 Words) of Boot Flash memory, DEVCFG0 to DEVCFG3.


Additionally, the DEVCFG0 word can only be programmed once. After that, an erase is required:


  The Configuration Word, DEVCFG0, can only be programmed once before a
  page  erase must be preformed. Each time the Boot Flash memory region
  is erased, the  DEVCFG0&lt;31> bit is automatically set to ‘0’, leaving
  only one additional  programming operation available, DEVCFG0.


Q2: Can we write a program to erase the BFM and, therefore, "reset" BWP?

No. Flash cannot be erased if it's write-protected. From the reference manual Section 5.7:


  A page erase performs an erase of a single page of either PFM or BFM.
  Refer to the specific device data sheet for the page size. The page to
  be erased is selected using the NVMADDR register.
  
  A page of Flash can
  only be erased if its associated page write protection is not enabled.