I've tried to create an old style payment ID (32 chars), but the new style payment ID accepts only 16 chars.
Old style payment IDs were removed several versions ago as they were unencrypted and made transactions stick out like sore thumbs, which is precisely something we want to avoid.
Hence they were removed.
So now, every tx has an encrypted 8 byte payment ID; which if the sender doesn't set, a dummy/random one is attached instead. This means every tx has an encrypted payment ID now, so they are effectively indistinguishable.
I want to pass data from sender to receiver in a transaction.
Monero is not some general purpose blockchain or messaging protocol, it's private digital cash. Thus if you want something to transfer arbitrary data, I suggest you use one of the myriad of other technologies to do so.
If you just need to privately tag a tx, use the 8 byte encrypted payment ID and keep track of that externally. For example, you could place an external database table's row primary key in the payment ID. Or alternatively use a subaddress.