UnitChannelInfo and UnitCastingInfo are the functions used by the ui to render the casting bar, so I'm not sure why they aren't fast enough for you.
It's possible you may need to change what events you're watching, check CastingBarFrame.lua in the framexml for how blizzard does it.
Lua Code:
self:RegisterEvent("UNIT_SPELLCAST_INTERRUPTED");
self:RegisterEvent("UNIT_SPELLCAST_DELAYED");
self:RegisterEvent("UNIT_SPELLCAST_CHANNEL_START");
self:RegisterEvent("UNIT_SPELLCAST_CHANNEL_UPDATE");
self:RegisterEvent("UNIT_SPELLCAST_CHANNEL_STOP");
self:RegisterEvent("UNIT_SPELLCAST_INTERRUPTIBLE");
self:RegisterEvent("UNIT_SPELLCAST_NOT_INTERRUPTIBLE");
self:RegisterEvent("PLAYER_ENTERING_WORLD");
self:RegisterUnitEvent("UNIT_SPELLCAST_START", unit);
self:RegisterUnitEvent("UNIT_SPELLCAST_STOP", unit);
self:RegisterUnitEvent("UNIT_SPELLCAST_FAILED", unit);