I think you could use a custom column to determine the BOGO discount and then set up a discount rule to take that amount off the total. Something like:
BOGODiscount = ([ID]=123)?floor([Quantity]/2)*[Price]:0
That should give a column value equal to the price of the item for every other item purchased for product ID 123.
Then just set up a discount for a total of that column value.