I ran into the same problem, trying to change expired account via OpenWithNewPassword method.
I test final version ODP .Net Managed driver (18.104.22.168). with Oracle 10g Release 2 and Oracle 11g.
IIRC, this bug was a problem on the server side. The bug may have been fixed in Oracle DB 22.214.171.124 or higher, such as 12.1. If you need the bug to be fixed in earlier Oracle DB versions, you'll need to request a backport fix through Oracle Support.
No, it's not a server bug. OCIPasswordChange works correctly, but only on 11g 32bit client (on 12c 64bit client - ORA-1017 bug). For example, see cx_Oracle (cx-oracle.sourceforge.net), module connection.c
The original poster's bug (Bug 14311412) was a server bug. It has been resolved in Oracle Database server 126.96.36.199 and higher. No changes were needed in managed ODP.NET.
It's certainly possible you could be hitting another unique bug, though I would recommend trying to connect to an DB server 188.8.131.52 or 12.1 to verify.