Right now, we can't trade synth materials, components or encodeables, except as swaps at a broker. However, historically, trading began as a peer to peer endeavour, and only later did large organisations arise to dominate the market. It doesn't make sense that there are any tradeable goods that players cannot trade with one another.
Trading data would be done the same way any trade would be done... the data would be copied to its new destination and deleted from the old.
Despite each encodeable having a generic name, each instance of a type of data would be unique, and if copied, only one copy would be of any use to the user, and duplicates would not provide any additional benefits or insight. In order to preserve the value of an encodeable datum, the seller would delete their copy on verification of successful delivery so that no situation where the same end-user (an engineer or broker) received identical instances from different sources would arise.
That would explain the in-game handling of encodeables. However, people being people, I would actually expect this to not actually occur in practise.
Rather, I would expect that each encodeable would be of use to each end-user, even if it had already been used by another end-user. This could be simulated by assigning each encodeable an unique ID, and having each end-user record IDs of the encodeables they receive, and refuse to accept duplicates.
However, this would require a much higher data overhead on the ED servers, and would also entail a large degree of uncertainty as to the value or lack thereof of any given encodeable instance to any given end-user. So, it is a reasonable compromise to treat each encodeable as if it was a physical item with an intrinsic value, and not a datum that potentially has value to many end-users... but only once for each.