It's easy, actually. data-updates.lua just needs this:
-- if enabled, also allow Realistic_Electric_Trains poles to be placed on water
if data.raw["rail-signal"]["ret-pole-placer"] then
data.raw["rail-signal"]["ret-pole-placer"].collision_mask = { "object-layer" }
data.raw["rail-signal"]["ret-signal-pole-placer"].collision_mask = { "object-layer" }
data.raw["rail-signal"]["ret-chain-pole-placer"].collision_mask = { "object-layer" }
-- required for blueprints
data.raw["constant-combinator"]["ret-pole-base-straight"].collision_mask = { "object-layer" }
data.raw["constant-combinator"]["ret-pole-base-diagonal"].collision_mask = { "object-layer" }
data.raw["rail-signal"]["ret-signal-pole-base"].collision_mask = { "object-layer" }
data.raw["rail-chain-signal"]["ret-chain-pole-base"].collision_mask = { "object-layer" }
end
And info.json should propably declare an optional dependency "? Realistic_Electric_Trains >= 0.4.0".
Realistic_Electric_Trains apparently doesn't care if the pole placers are on water.
EDIT: Added additional entities to properly support blueprints.
Cross-referencing: https://mods.factorio.com/mod/Realistic_Electric_Trains/discussion/5cb86ada568e5a000d1be58d