Q:

Can an iBeacon have a data payload

I know that the definition of an iBeacon is a fixed specification of the advertising packet that it is transmitting:

9 bytes iBeacon prefix 
16 byte UUID 
2 bytes Major 
2 bytes Minor 
1 byte TX power

That being said, is there anything that would prevent a beacon from both sending out advertising iBeacon packets to wake up a phone's app and also transmit actual data content as part of a BLE packet?  Would there be a lot of handshaking required in order to send / transmit additional data?
Is there some other way for a beacon to transmit data?  One of my large concerns is spoofing of my beacons to falsify the data I am attempting to collect.  I was hoping that being able to transmit some data along with an iBeacon packet would allow me to limit the spoofing.
Is something like that even feasible?

A:

A few possibilities:

You can tack on one extra data byte to the end of the iBeacon transmission before it reaches its max advertisement length.  This byte cannot be read by iOS devices, though, because Apple blocks reading raw data of iBeacon adverts.  It would work on Android/Mac/Linux.
You can interleave a second advertisenent with mostly data fields and line the two up with a common identifier like the minor.  The more bytes you allocate to lining up the advertisements, the fewer you have to use for data.  You can't use the mac tobline them up, because that is unreadable in iOS for the iBeacon transmission.
You can make the beacon connectable via GATT, and read data fields with GATT attributes.  The beacon will stop advertising, though, when connected.  This limits throughput and reliability.

All of these options require you to build a custom BLE beacon that does multiple advertisements.  It is not a trivial undertaking. 

