Can a bitcoin transaction hold an arbitrary string or strings for reference?
No such support exists in the bitcoin protocol. Use a different receiving address for every transaction to uniquely identify them, if you do this correctly then no external labels are necessary.