That's not how Min / Desired / Max work for pSeries memory. Desired is the amount of memory the LPAR will get allocated, if that much is free in the entire frame, when the server boots. Minimum is the lowest value the LPAR will tolerate having assigned at boot time, and the lowest value you can dynamically reduce the memory to, and Maximum is the largest value you can dynamically allocate to the LPAR while it's running.
However, while it's running, AIX will not consume more memory if it reaches the 16GB. The LPAR had 16GB, it ran out, AIX killed a bunch of processes (this is normal), and you rebooted it. It never tried to grab more memory, that's not how it works.
To change the available memory (either up or down), you use the HMC to perform DLPAR operations. So you could have manually increased the memory from 16GB to say 20GB from your HMC while the server was having issues, and that may have helped (or it may not have done so, or the DLPAR may have failed because it requires the server to fork processes which may not have been possible). You can automate some DLPAR activity, and you can even tie it all together with something like Tivoli, but it doesn't happen on it's own.
There's a good summary here.